2013-03-07 75 views
0

好吧,一個簡單的問題:我在主要活動中有一個數組列表。當用戶點擊一個按鈕時,我打開一個對話框,用戶可以輸入姓名,電話號碼和電子郵件地址,當他們點擊對話按鈕「添加聯繫人」時,他們的輸入存儲在上述的數組列表中。我如何讓它顯示在第二個對話框中(即在文本視圖中等)?打開對話框並在textview中顯示arraylist

我的代碼爲MainActivity.java: package com.example.java2midterm_lefelhocz;

​​

AddContactsDialog: 包com.example.java2midterm_lefelhocz;

import android.app.DialogFragment; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.widget.*; 

public class AddContactDialog extends DialogFragment { 
private EditText txtName; 
private EditText txtPhone; 
    private EditText txtEmail; 
private LayoutInflater inflater; 

public AlertDialog onCreateDialog(Bundle savedInstanceState){ 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    inflater = getActivity().getLayoutInflater(); 

    builder.setView(inflater.inflate(R.layout.add_contacts, null)); 
    builder.setTitle("Add A Contact"); 
    builder.setPositiveButton("AddContact", new  DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MainActivity ma = (MainActivity)getActivity(); 
      txtName = (EditText)AddContactDialog.this.getDialog().findViewById(R.id.txtName); 
      txtPhone =  (EditText)AddContactDialog.this.getDialog().findViewById(R.id.txtPhone); 
      txtEmail =  (EditText)AddContactDialog.this.getDialog().findViewById(R.id.txtEmail); 
      ma.contacts.add(txtName.getText().toString()); 
      ma.contacts.add(txtPhone.getText().toString()); 
      ma.contacts.add(txtEmail.getText().toString()); 

     } 
    }); 
    return builder.create(); 
} 

} 

最後,ViewContacts.java:

包com.example.java2midterm_lefelhocz;

import android.app.DialogFragment; 
import android.app.AlertDialog; 

import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.widget.*; 

public class ViewContacts extends DialogFragment { 

private TextView txtContacts; 
private LayoutInflater inflater; 
public AlertDialog onCreateDialog(Bundle savedInstanceState) 
{ 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  


    inflater = getActivity().getLayoutInflater();  


    builder.setView(inflater.inflate(R.layout.view_contacts, null)); 
    builder.setTitle("Contacts"); 




    return builder.create(); 
} 
} 
+0

我不明白你的問題。 AddContactDialog或「第二個對話框」有問題嗎?如果您需要幫助添加與'ma.contacts'相關的代碼,如果您需要ViewContacts的幫助來描述問題,請點擊此處,然後發佈相關代碼。 (您發佈了兩次AddContactDialog ...) – Sam 2013-03-07 16:35:39

+0

我可以正確存儲用戶輸入,我只需要在名爲ViewContacts.java的對話框中顯示它 – 2013-03-07 16:37:47

回答

0

您可以在一個Bundle通過contacts有:

newFragment.setArguments(bundle); 

然後在你的片段閱讀。或者,您可以像讀取AddContactsDialog中的靜態變量一樣閱讀contacts。使用public變量很方便,但通常認爲是不安全的,首選的方法是使用getters/setter和其他間接傳遞數據的方式(如在Bundle中)。

可以顯示在對話框這些接觸在許多方面最基本的就是setItems()

OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Log.v("Dialog List", "You clicked item " + which); 
    } 
}; 

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
builder.setTitle("Contacts"); 
builder.setItems(MainActivity.contacts, dialogClickListener); 
return builder.create(); 
+0

我做了setItems,但它說dialogClickListener無法解析爲變量。 – 2013-03-07 17:00:02

+0

是的,您需要編寫一個DialogInterface.OnClickListener來指定單擊某個項目時想要發生的情況。如果你想作爲示範,我可以寫一篇膚淺的文章。 – Sam 2013-03-07 17:04:11

+0

好吧,我正在使用setItems,但它顯然希望我將字符串的數組列表更改爲int。我不想這樣做。 – 2013-03-07 17:26:09