2012-02-25 31 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

相关问题