Salve,
Ho un problema con i passaggi di dati tra dialog e activity generale, sicuramente dovuta ad una mia mancata comprensione dei meccanismi di dialog.
Il problema:
In una applicazione ho creato una dialog personalizzata. Vorrei che l'utente inserisse un nome utente ed una password, ed infine premendo Salva salvare questi dati in un file.
Però quando vado a comunicare queste due stringhe all'activity, accedendo a due sue variabili pubbliche, l'applicazione crasha.
In allegato le parti di codice relative.
Qual è il modo corretto per passare i valori delle textView della dialog alle variabili dell'activity?
Layout dialog:
x1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2android:id="@+id/layout_root"
3android:orientation="vertical"
4android:layout_width="fill_parent"
5android:layout_height="fill_parent"
6android:padding="10dp"
7android:layout_gravity="center">
8<!-- <TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> -->
9<EditText android:layout_height="wrap_content"
10android:id="@+id/txtUserId"
11android:text="@+string/userId"
12android:layout_width="match_parent" android:singleLine="true">
13</EditText>
14
15<EditText android:layout_height="wrap_content"
16android:id="@+id/txtPwd"
17android:text="@+string/password"
18android:layout_width="match_parent" android:password="true" android:singleLine="true">
19</EditText>
20
21
22<Button android:text="@+string/btn_Done"
23android:id="@+id/btnDone"
24android:layout_width="wrap_content"
25android:layout_height="wrap_content" android:layout_gravity="center">
26</Button>
27
28</LinearLayout>
631
2//activity principale
3public class home extends Activity {
4//=====================
5//VARIABILI
6TextView diagTxtID;
7TextView diagTxtPwd;
8String strUserId;
9String strPassword;
10//=====================
11//LISTENER
12View.OnClickListener btnDone_click = new View.OnClickListener() {
13
14public void onClick(View v) {
15log("salva credenziali " + ((Button)v).getText());
16
17strUserId = diagTxtID.getText().toString();
18strPassword = diagTxtPwd.getText().toString();
19
20//saveCredentials(txtID.getText().toString(), txtPwd.getText().toString());
21log("fine done");
22}
23};
24
25
26//=====================
27//CREAZIONE DELLA DIALOG:
28protected Dialog onCreateDialog(int id) {
29
30switch (id) {
31case AUTH_DIALOG_ID:
32{
33log("implementa dialog per inserimento credenziali");
34Dialog dialog = new Dialog(home.this);
35
36dialog.setContentView(R.layout.auth_dialog);
37dialog.setTitle(getString(R.string.insert_credentials));
38
39if(loadCredentials()){
40((Button)findViewById(R.id.txtUserId)).setText(strUserId);
41((Button)findViewById(R.id.txtPwd)).setText(strPassword);
42}
43
44Button btnSave = (Button)dialog.findViewById(R.id.btnDone);
45log("btnSave creato");
46btnSave.setOnClickListener(btnDone_click);
47
48
49dialog.show();
50}
51}
52return null;
53}
54
55//=====================
56//ON CREATE (ACTIVITY)
57public void onCreate(Bundle savedInstanceState) {
58super.onCreate(savedInstanceState);
59setContentView(R.layout.main);
60diagTxtID = (TextView)findViewById(R.id.txtUserId);
61diagTxtPwd = (TextView)findViewById(R.id.txtPwd);
62}
63