2013-09-24 73 views
0

我在android中試驗對話框,並遇到了一些問題。
我有兩個類,一個是擴展Activity的MainActivity,另一個是擴展DialogFragment的MyDialog。它來自MainActivity中的一個新的MyDialog對象,我在對象上調用show方法來顯示對話框。如何在實現DialogFragment的類中設置textview文本


現在選擇任何選項後,我嘗試了很多方法來將TextText設置爲TextView,但是我無法使用findViewById方法,因爲Activity和我不是在MyDialog中擴展Activity。試圖創建一個新的活動對象(只是試圖),並從那裏使用findViewById方法,但無濟於事。
另外我試圖在創建MyDialog對象之前在MainActivity的OnCreate方法中創建公共TextView,並嘗試從另一個類訪問setText並且它也沒有工作。請幫助,如何在通過DialogFragment附帶的setPositive,setNegative和setNeutral方法選擇對話框中的選項後設置文本。

這裏是MyDialog類的某些提取物,只是這裏我設置對話框選項標題等部分:

@覆蓋 公共對話框onCreateDialog(捆綁savedInstanceState){

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setMessage(R.string.dialogMessage).setPositiveButton(R.string.dialogacceptmsg, new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      //setting text and color to text in a result textview 
      message.setText("You are going to MARS with Sir Richard Branson"); 

      /*v= new Activity();//creating a new activity to find the textview 
      message=(TextView)v.findViewById(R.id.textView1); 
      message.setText("You are going to MARS with Sir Richard Branson"); 
      message.setTextColor(Color.MAGENTA);*/ 

     } 
    }).setNegativeButton(R.string.dialogcancelmsg,new DialogInterface.OnClickListener() { 


     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      //setting text and color to text in a result textview 
      message.setText("Your ticket will be sold to Justin Bieber"); 

      /* v= new Activity();//creating a new activity to find the textview 
      message = (TextView) v.findViewById(R.id.textView1); 
      message.setText("Your ticket will be sold to Justin Bieber"); 
      message.setTextColor(Color.RED);*/ 


     } 
    }).setNeutralButton("Not sure",new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface arg0, int arg1) { 
      // setting text and color to text in a result textview 
      message.setText("Keeping it on standby"); 
      /*v=new Activity(); 
      message =(TextView) v.findViewById(R.id.textView1); 
      message.setText("Keeping it on standby"); 
      message.setTextColor(Color.BLUE);*/ 

     } 
    }).setTitle(R.string.dialogTitle) ; 


    return builder.create(); 
} 

回答

2

有你試過

TextView yourTextView = (TextView) getActivity().findViewById(R.id.yourTextView); 
yourTextView.setText("Some text"); 

+0

thanx夥計這工作得很好。對android來說真的很陌生 – Manny265

1

選項1:

使用getActivity()getParentFragment()這取決於您建立DialogFragment是(活動/片段)和文件建立公共方法像setTextForMyView(String text)以一個屬性,並把它放入文本視圖。

此,如果您使用的活動的情況下創建DialogFragment只會工作,這意味着你正在做一些像new MyDialogFragment(this...)而不是new MyDialogFragment(getApplicationContext()...)

選項2:

設置您DialogFragmentinterface,讓父活動實現它,在顯示對話框之前將父活動作爲接口的監聽器傳遞給構造函數或某種方法,然後在單擊之後調用接口的方法。

旁註:我強烈建議您閱讀關於Activitiesthe Activity Lifecycle的文檔,以便您知道爲什麼在其他活動中引用TextView或嘗試創建新文檔不起作用。

相關問題