Moin Leute,
ich habe vor eine Benutzereingabe anzeigen zu lassen bzw zu speichern, dazu erstmal die prompts.xml welche das Design des EingabeFensters ausmacht:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/kategorie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Kategorie : "
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/kategorieInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/betrag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Betrag : "
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/betragInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" />
<TextView
android:id="@+id/datum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Datum : "
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/datumInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="date" />
</LinearLayout>
Alles anzeigen
Wie man sieht rodere ich 3 Eingaben:
Kategorie - String
Betrag - number
Datum - date
nun meine MainActivity.java
(ich habe imports rausgelassen um etwas Platz hier zu sparen)
public class MainActivity extends Activity implements OnClickListener {private Button button1;
final Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
LayoutInflater li = LayoutInflater.from(context);
final View promptsView = li.inflate(R.layout.prompts, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder.setView(promptsView);
alertDialogBuilder.setCancelable(true).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//TextView tv1 = (TextView) findViewById(R.id.textView1);
//String value = kat.getText().toString();
//EditText kat = (EditText) findViewById(R.id.kategorieInput);
//String katout = kat.getText().toString();
//tv1.setText(""+katout);
//String kat = promptsView.toString();
//tv1.setText("" + katout);
}
}).setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();}});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
Alles anzeigen
In der Methode public void onClick ist jetzt mal alles auskommentiert, packe ich die Zeile
EditText kat = (EditText) findViewById(R.id.kategorieInput);
rein ist alles noch ok, doch sobald die Zeile
String katout = kat.getText().toString();
drin ist stürtzt das Programm ab sobald ich die OK-Taste des promptes betätige.
Mein ziel ist es im Prinzip an alle 3 Benutzereingaben zu kommen, jedoch weiss ich nicht wie.
Ich hatte es beim herumexperimentieren mal so weit das er sich eine Speicheradresse in die variable katout gepackt hat, aber ich find nicht raus wie ich das Problem lösen kann, die App stürzt bei der besagten Zeile ab obwohl mit der variable katout noch garnichts gemacht wird...
Falls ich etwas unklar formuliert habe oder noch Fragen sind einfach bescheid sagen.
Mit freundlichem Gruß
septix