2012-02-25 4 views
0

대화 상자에서 하나의 문자열, 두 개의 정수 및 하나의 시간 피커 결과를이 대화 상자가 작성된 활동으로 가져 오려고합니다. 이 활동에이 정보를 어떻게 전달할 수 있습니까? 아래에 내 코드가 있습니다.대화 상자에서 작성된 활동으로 데이터 전달

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

그것이 작동합니다 귀하의 답변 주셔서 감사합니다. –

관련 문제