2013-04-16 1 views
0

한 대화 상자에서 다른 대화 상자로 데이터를 전달하고 싶습니다. 는 내가 목록보기에 옵션을 표시하기 위해 인, onCreateContextMenu 대화 상자가업데이트 할 때마다 AlertDialog 번들로 값이 변경됩니다.

코드 :

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item 
      .getMenuInfo(); 

    switch (item.getItemId()) { 

    case R.id.update_item: 

     Object o1 = lv1.getItemAtPosition(info.position); 
     ItemDetails obj_itemDetails1 = (ItemDetails) o1; 
     /*Toast.makeText(getApplicationContext(), 
       "You have chosen : " + " " + obj_itemDetails1.getId(), 
       Toast.LENGTH_LONG).show(); */ 
     Bundle arg= new Bundle(); 
     arg.putString("key", obj_itemDetails1.getId()); 
     showDialog(DIALOG_ID, arg); 
     return true; 

    } 
    return false; 
} 

내가 번들을 사용하여 경고 대화 상자이 대화 상자에서 데이터를 전송하고 있습니다.

코드 :

protected final Dialog onCreateDialog(final int id, Bundle arg) { 
    Dialog dialog = null; 
    switch (id) { 
    case DIALOG_ID: 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     LayoutInflater inflater = this.getLayoutInflater(); 
       arg.getString("key");// getting same value here 

     builder.setMessage(arg.getString("key")); 
     builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
     builder.setNegativeButton("Update", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

       } 
      });  

     AlertDialog alert = builder.create(); 
     alert.setTitle("Update Info"); 
     dialog = alert; 
     break; 

    default: 

    } 
    return dialog; 
} 

} 

내가 선택한 위치

에 따라하지만 경고 대화 상자에서 arg.getString("key");에 내가 동일한 데이터 매번를 얻고 새로운 데이터 매번를 보내고

Bundle arg= new Bundle(); 
      arg.putString("key", obj_itemDetails1.getId()); 
      showDialog(DIALOG_ID, arg); 

에서. 새 위치를 클릭해도 데이터가 업데이트되지 않습니다.

나는 arg.remove("key");arg.clear();을 사용했지만 작동하지 않았습니다.

어떻게해야합니까? 또는 AlertDialog에서 데이터를 전달하는 다른 아이디어. 가되지 않는 것 같은

답변

0

당신은 당신이 보는 것 또한 당신이 자바 독을 확인할 경우 showDialog 방법을 사용해서는 안 :

이 onCreateDialog의 호출 (INT, 번들)는 동일한 ID입니다 로 만든 것

이 ID가 처음으로 호출되면입니다.

그런 값을 업데이트 할 수 없습니다.

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
YourDialog d = YourDialog.newInstance(...); 
d.show(ft, YourDialog.class.getSimpleName()); 

은 다음 검색 : 그냥 대화를 검색 (또는 생성을가 존재하지 않는 경우)하는 방법을 통해 새 매개 변수를 전달할 수 DialogFragment를 사용

-

YourDialog d = (YourDialog) getSupportFragmentManager().findFragmentByTag(YourDialog.class.getSimpleName()) 
if (d == null) { 
    //create a new dialog like before 
} 

d.setValue(yourValue) 
관련 문제