2016-04-27 1 views
0

作成したCustomDialogからデータ(Object)を取得しようとしています。私は、CustomDialog内の学習曲線としてリスナーを使用して、ダイアログを呼び出すアクティビティにオブジェクトを送信する方法を学習したいと思います。私はいくつかのチュートリアルを試してみましたが、それは正しいとは思われません。私はエラーListenerを使用してCustomDialogからデータを取得しようとしていません

android.view.WindowManager $ BadTokenExceptionました:ウィンドウを追加することができません - ここにあるトークンnullはアプリケーション

マイCustomDialogのためではないが:

public class DetailsDialog extends Dialog implements TextWatcher { 
private TextView textCount; 
private EditText title, desc; 
private Button next; 
private DialogListener dialogListener; 

public interface DialogListener { 
    public void detailsInputted(Memory memory); 
} 

public DetailsDialog(Context context, DialogListener dialogListener){ 
    super(context); 
    this.dialogListener = dialogListener; 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.details_dialog); 

    textCount = (TextView)findViewById(R.id.textCount); 
    title = (EditText)findViewById(R.id.title); 
    desc = (EditText)findViewById(R.id.desc); 
    desc.addTextChangedListener(this); 
    next = (Button)findViewById(R.id.next); 

    next.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Memory memory = new Memory(); 
      memory.setDescMem(desc.getText().toString()); 
      memory.setTitleMem(title.getText().toString()); 
      memory.setFormatedDate(new Date()); 
      dialogListener.detailsInputted(memory); 
      dismiss(); 
     } 
    }); 


} 

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    textCount.setText(String.valueOf(140 - s.length())); 
} 

@Override 
public void afterTextChanged(Editable s) { 

} 

} 

そして、ダイアログが呼び出されます:

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 
      DetailsDialog dialog = new DetailsDialog(getApplicationContext(), new DetailsDialog.DialogListener() { 
       @Override 
       public void detailsInputted(Memory memory) { 
        Log.i("MEMORY", memory.getDescMem()); 
        Log.i("MEMORY", memory.getTitleMem()); 
       } 
      }); 
      dialog.show(); 
     } 
    }); 

} 

ダイアログのコンストラクターをコンテキストだけに戻した場合、ダイアログが表示されます。しかし、私はそれに設定されているオブジェクトを取得したい。あなたは皆、お手伝いし、ありがとう!

答えて

0

最終的に何が問題になっているかを発見しました。 DialogのコンストラクタでgetApplicationContext()の代わりに 'HomeActivity.this'を入れる必要がありました。

関連する問題