2012-02-25 36 views
0

我想從對話框中獲取一個字符串,兩個整數和一個timepicker結果,以創建此對話框的活動。我怎樣才能將這些信息傳遞給這個活動? 下面是我的代碼。將數據從對話框傳遞到創建的活動

package ilachatirlatici.pack.net; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class HapHatirlatici extends Activity{ 

Button ekleButton; 
boolean eklendiMi; 
EditText ilacAdi; 
String ilacAdiString; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.haphatirlatici); 

    // After creating the activity setting other things for running 
    ekleButton = (Button) findViewById(R.id.EkleButton); 
    eklendiMi = false; 
    ilacAdiString = ""; 
    ekleButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     ilacAdi = (EditText) findViewById(R.id.KayitAdiEditText); 
     View layout = getLayoutInflater().inflate(R.layout.ekle_dialog, null);        
     AlertDialog.Builder builder = new AlertDialog.Builder(HapHatirlatici.this); 
     builder.setPositiveButton(R.string.ekle,new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       eklendiMi = true; 
       ilacAdiString = ilacAdi.getText().toString(); 
       //ilacAdiString = ilacAdi.getEditableText().toString(); 
       databaseEkle(eklendiMi, ilacAdiString); 
      } 
     }); 
     builder.setNegativeButton(R.string.vazgec, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       eklendiMi = false; 
       databaseEkle(eklendiMi, ""); 
      } 
     }); 
     builder.setView(layout); 
     AlertDialog alertDialog = builder.create(); 
     alertDialog.setTitle("Ilac Ekleme"); 
     alertDialog.show(); 


     } 
    }); 
} 
public boolean databaseEkle(boolean eklemeVarMi, String ilacAdi) 
{ 
    boolean sonuc = false; 
    System.out.println(ilacAdi); 
    return sonuc; 
} 

} 

我想在正面的按鈕部分得到結果。我只實現了字符串部分。由於其他部分將是相同的。如何將此字符串傳遞給databaseEkle()函數?

+0

是不是好像你已經傳遞了價值? – waqaslam 2012-02-25 21:02:41

+0

是的,它似乎是這樣。但是,當它進入正面按鈕部分時,應用程序會強制關閉。該部分引發空指針異常。 – 2012-02-25 21:27:01

+0

你也可以粘貼異常堆棧跟蹤。帶有try catch語句的 – waqaslam 2012-02-25 22:01:43

回答

1

您實際上正在嘗試訪問EditText,它實際上位於AlertDialog的佈局R.layout.ekle_dialog中。你需要引用你的膨脹佈局來引用edittext。

設定按鈕的onClick監聽器是這樣的:

ekleButton.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    View layout = getLayoutInflater().inflate(R.layout.ekle_dialog, null); 
    EditText myEditText = (EditText) layout.findViewById(R.id.KayitAdiEditText); 
    AlertDialog.Builder builder = new AlertDialog.Builder(HapHatirlatici.this); 
    builder.setPositiveButton(R.string.ekle,new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      eklendiMi = true; 
      ilacAdiString = myEditText.getText().toString(); 
      //ilacAdiString = ilacAdi.getEditableText().toString(); 
      databaseEkle(eklendiMi, ilacAdiString); 
     } 
    }); 
    builder.setNegativeButton(R.string.vazgec, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      eklendiMi = false; 
      databaseEkle(eklendiMi, ""); 
     } 
    }); 
    builder.setView(layout); 
    AlertDialog alertDialog = builder.create(); 
    alertDialog.setTitle("Ilac Ekleme"); 
    alertDialog.show(); 


    } 
}); 

在這個例子中,我使用myEditText代替ilacAdi因爲你已經宣佈你EDITTEXT全球,這並不需要在這種情況下

+0

謝謝你的回答,它正在工作。 – 2012-02-25 22:49:16

相關問題