K
KuehlesBlondes
Neues Mitglied
- 0
Hallo Leute,
ich bin neu im Android Studio Universum und habe meine erste App Programmiert, die ich für die Uni programmieren musste. Mir fehlt nur eine Sache, die will einfach nicht! Das ist bei einem dynamisch erzeugten EditText diese durchgezogene Line zu erzeugen.
Desweiteren suche ich gute Tutorials, Bücher etc.
Ich danke euch für eure Hilfe.
ich bin neu im Android Studio Universum und habe meine erste App Programmiert, die ich für die Uni programmieren musste. Mir fehlt nur eine Sache, die will einfach nicht! Das ist bei einem dynamisch erzeugten EditText diese durchgezogene Line zu erzeugen.
Desweiteren suche ich gute Tutorials, Bücher etc.
Ich danke euch für eure Hilfe.
Java:
package android.dr.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.InputType;
import android.text.method.ScrollingMovementMethod;
import javax.crypto.Cipher;
import java.io.*;
import android.util.Base64;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.MultiAutoCompleteTextView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.Toast;
import java.nio.charset.StandardCharsets;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
public class MainActivity extends AppCompatActivity implements OnClickListener {
LinearLayout parent;
LinearLayout myButtons;
TableLayout myKeys;
TableRow row1, row2, row3, row4;
String eingabe;
String[] passwortString=new String[10];
String[] password=new String[10];
String Data;
Button key1, key2, key3, key4, key5,
key6, key7, key8, key9, key0,
keyok, keyoptik;
SharedPreferences Prefs;
SharedPreferences.Editor PerfSEditor;
EditText edittext;
int count=0;
int check=0;
int start=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parent = (LinearLayout) findViewById(R.id.ll1);
parent.setOrientation(LinearLayout.VERTICAL);
myButtons = (LinearLayout) getLayoutInflater().inflate(R.layout.del_save, null);
myKeys = (TableLayout) getLayoutInflater().inflate(R.layout.passwortkey, null);
Button b1 = new Button(this);
b1.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
b1.setId((int) 1);
b1.setText("New CodeStore");
b1.setTag(1);
b1.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
b1.setTag("probe");
Prefs = this.getSharedPreferences("data", MODE_PRIVATE);
PerfSEditor = Prefs.edit();
edittext = new EditText(this);
edittext.setSingleLine(false);
edittext.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
edittext.setLines(5);
edittext.setMaxLines(8);
edittext.setVerticalScrollBarEnabled(true);
edittext.setMovementMethod(ScrollingMovementMethod.getInstance());
edittext.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);
edittext.setHint(Prefs.getString("gespeichert", "Kein Text gespeichert"));
if (!(edittext.getHint().equals("Kein Text gespeichert"))) {
start = 1;
password();
}
else
parent.addView(b1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
displayCodeStore();
}
});
}
public void displayCodeStore() {
Button save2 = new Button(this), delete3 = new Button(this);
parent.removeAllViews();
//EditText
//Buttons
parent.addView(edittext);
parent.addView(myButtons);
save2 = findViewById(R.id.save2);
delete3 = findViewById(R.id.delete3);
save2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Speichern
if (edittext.getText().length() == 0) {
Toast.makeText(getApplicationContext(), "Kein Text zum Speichern", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getApplicationContext(),"Ist jetzt"+start,Toast.LENGTH_SHORT).show();
start=0;
password();
}}});
//Löschen
delete3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!(edittext.getHint().equals("Kein Text gespeichert"))) {
final AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)
.setTitle("Daten wirklich Löschen?")
.setMessage("Ok zum bestätigen cancel zum Abbrechen")
.setPositiveButton("ok", null)
.setNegativeButton("cancel", null)
.show();
Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PerfSEditor.remove("gespeichert");
PerfSEditor.commit();
edittext.setHint("");
edittext.setText("");
dialog.dismiss();
Toast.makeText(getApplicationContext(), "Gelöscht", Toast.LENGTH_LONG).show();
finish();
}
});
} else
Toast.makeText(getApplicationContext(), "keine Daten zum Löschen", Toast.LENGTH_SHORT).show();
}
});
}
public void password() {
key1 = new Button(this); key2 = new Button(this); key3 = new Button(this); key4 = new Button(this); key5 = new Button(this);
key6 = new Button(this); key7 = new Button(this); key8 = new Button(this); key9 = new Button(this); key0 = new Button(this);
keyok = new Button(this); keyoptik = new Button(this);
password[0]="1";
password[1]="2";
password[2]="3";
password[3]="4";
EditText edittext2;
ArrayList<Integer> zufallzahlen = new ArrayList<Integer>(10);
parent.removeAllViews();
myKeys = new TableLayout(this);
row1 = new TableRow(this);
row2 = new TableRow(this);
row3 = new TableRow(this);
row4 = new TableRow(this);
TableLayout.LayoutParams LayoutParams = new TableLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
TableRow.LayoutParams RowParams = new TableRow.LayoutParams();
row1.setLayoutParams(RowParams);
RowParams.column = 2;
myKeys.setLayoutParams(LayoutParams);
row1.setLayoutParams(LayoutParams);
row1.addView(key1);
row1.addView(key2);
row1.addView(key3);
row2.addView(key4);
row2.addView(key5);
row2.addView(key6);
row3.addView(key7);
row3.addView(key8);
row3.addView(key9);
row4.addView(key0);
row4.addView(keyok, RowParams);
myKeys.addView(row1);
myKeys.addView(row2);
myKeys.addView(row3);
myKeys.addView(row4);
parent.addView(myKeys);
for (int i = 0; i <= 9; i++) {
zufallzahlen.add(i);
}
Collections.shuffle(zufallzahlen);
key0.setText(Integer.toString(zufallzahlen.get(0)));
key1.setText(Integer.toString(zufallzahlen.get(1)));
key2.setText(Integer.toString(zufallzahlen.get(2)));
key3.setText(Integer.toString(zufallzahlen.get(3)));
key4.setText(Integer.toString(zufallzahlen.get(4)));
key5.setText(Integer.toString(zufallzahlen.get(5)));
key6.setText(Integer.toString(zufallzahlen.get(6)));
key7.setText(Integer.toString(zufallzahlen.get(7)));
key8.setText(Integer.toString(zufallzahlen.get(8)));
key9.setText(Integer.toString(zufallzahlen.get(9)));
keyok.setText("Eingabe");
keyok.setOnClickListener(this);
key1.setOnClickListener(this);
key2.setOnClickListener(this);
key3.setOnClickListener(this);
key4.setOnClickListener(this);
key5.setOnClickListener(this);
key6.setOnClickListener(this);
key7.setOnClickListener(this);
key8.setOnClickListener(this);
key9.setOnClickListener(this);
key0.setOnClickListener(this);
key0.setId((int) 10);
key1.setId((int) 11);
key2.setId((int) 12);
key3.setId((int) 13);
key4.setId((int) 14);
key5.setId((int) 15);
key6.setId((int) 16);
key7.setId((int) 17);
key8.setId((int) 18);
key9.setId((int) 19);
keyok.setId((int) 20);
}
@Override
public void onClick(View v) {
switch(v.getId()) {
case 10:
passwortString[count] = key0.getText().toString();
++count;
break;
case 11:
passwortString[count] = key1.getText().toString();
++count;
break;
case 12:
passwortString[count] = key2.getText().toString();
++count;
break;
case 13:
passwortString[count] = key3.getText().toString();
++count;
break;
case 14:
passwortString[count] = key4.getText().toString();
++count;
break;
case 15:
passwortString[count] = key5.getText().toString();
++count;
break;
case 16:
passwortString[count] = key6.getText().toString();
count++;
break;
case 17:
passwortString[count] = key7.getText().toString();
count++;
break;
case 18:
passwortString[count] = key8.getText().toString();
count++;
break;
case 19:
passwortString[count] = key9.getText().toString();
count++;
break;
case 20:
/**Überprüfen ob Passwort eingeben wurde*/
if(passwortString[0]==null)
/**Toast wenn kein Passwort eingeben wurde zur aufforderrung*/
Toast.makeText(getApplicationContext(),"Bitte Passwort eingeben",Toast.LENGTH_SHORT).show();
/**Wenn Password eingeben wurde forschleife und EingabeString mit Passwortsting verlgeichen*/
else {
for (int i = 0; i < passwortString.length; i++) {
/**check bleibt solange gleich bis eine Zahl nicht übereinstimmt*/
if (password[i] == passwortString[i])
check = 1;
/**wenn eine Zahl nicht passt wird check Null gestzt*/
else {
check = 0;
break;
}
}
/**
* Wenn check gleich Null ist passwortString wird mit Null gefüllt und durch ein Rekrusiven Aufruf Passwort neugestartet
*/
if(check==0) {
Toast.makeText(getApplicationContext(), "Passwort falsch", Toast.LENGTH_SHORT).show();
for (int i = 0; i < passwortString.length; i++) {
passwortString[i] = null;
}
count = 0;
password();
}
/** Wenn check = 1 ist dann werden die Daten gespeichert*/
else if (check == 1&&start==0) {
Toast.makeText(getApplicationContext(), "Passwort stimmt", Toast.LENGTH_SHORT).show();
eingabe = edittext.getText().toString();
byte[] byteeingabearry = new byte[0];
try {
byteeingabearry = eingabe.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
}
Data=Base64.encodeToString(byteeingabearry,0);
PerfSEditor.putString("gespeichert",Data );
PerfSEditor.commit();
edittext.setText("");
edittext.setHint(Prefs.getString("gespeichert", "Kein Text gespeichert"));
Toast.makeText(getApplicationContext(), "gespeichert wurde: " + eingabe + "", Toast.LENGTH_SHORT).show();
finish();
}
else{
start=0;
byte[] data=Base64.decode((Prefs.getString("gespeichert", "Kein Text gespeichert")),0);
String ausgabe=new String(data, StandardCharsets.UTF_8);
PerfSEditor.putString("gespeichert",ausgabe );
PerfSEditor.commit();
edittext.setHint(Prefs.getString("gespeichert", "Kein Text gespeichert"));
displayCodeStore();
}
break;
}
default:
password();
}
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/ll1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="8dp"
android:orientation="vertical"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="MissingConstraints">
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
XML:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
</TableLayout>
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/save_del"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:ignore="NamespaceTypo">
<Button
android:id="@+id/save2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/save" />
<Button
android:id="@+id/delete3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/delete" />
</LinearLayout>
Zuletzt bearbeitet: