2012-02-25 25 views
0

このダイアログが作成されたアクティビティへのダイアログから、1つの文字列、2つの整数、および1つのタイムピッカー結果を取得しようとしています。この情報をこのアクティビティにどのように渡すことができますか? 以下に私のコードがあります。ダイアログから作成されたアクティビティへのデータの受け渡し

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

+0

はい、そんな感じです。しかし、それがポジティブボタンの部分に入ると、アプリケーションは強制終了を指示します。その部分はnullpointer例外をスローします。 –

+0

例外スタックトレースも貼り付けることができます。 – waqaslam

答えて

1

実際にAlertDialogのレイアウト内にあるEditTextにアクセスしようとしていますR.layout.ekle_dialog。 edittextを参照するには、膨らんだレイアウトを参照する必要があります。

は、このようなあなたのボタンのonClickリスナーを設定します。あなたはこのケースである必要はありません。これは、あなたのEditTextがグローバルに宣言しているので、私は代わりにilacAdimyEditTextを使用しています。この例では

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(); 


    } 
}); 

+0

それは働いているあなたの答えをありがとう。 –

関連する問題