2013-01-17 29 views
3

希望我會成功的解釋我的情況是最好的。安卓:傳遞活動之間的參數帶適配器

我有一個活動(A),它基本上是一個表單添加一個新的項目,很少文本字段,時間和地點現場。 點擊一個按鈕setlocation當調用具有帶定製ArrayAdapter爲locactins其中本建議的列表視圖的第二活性(B)。在一個項目點擊(OnClickListener適配器類中),當它需要通過它從一個

Intent I = new Intent(getApplicationContext(), TaskGeoSetActivity.class); 
startActivityForResult(I, LOC_ACTIVITY_CODE); 

設置活動B內的適配器falue回活動A.

呼叫活動B

Adapter = new TaskGeoSubBaseAdapter(getApplicationContext(), R.id.sugtext, result); 
Adapter.setActivity(TaskGeoSetActivity.this); 
lv.setAdapter(Adapter); 
在適配器內

onclick事件

public void setActivity(Activity act) { 
    parentAct = act; 
} 

private final OnClickListener locpicker = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Address a = items.get((Integer) v.getTag()); 
      Intent intent = new Intent(context, TaskAddActivity.class); 
      intent.putExtra("Address", a); 
      parentAct.setResult(parentAct.RESULT_OK, intent); 
     } 

}; 

回答

5

取代點擊處理程序有了這個。

private final OnClickListener locpicker = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     Address a = items.get((Integer) v.getTag()); 
     Intent intent = new Intent(context, TaskAddActivity.class); 
     intent.putExtra("Address", a); 
     ((Activity)v.getContext()).setResult(parentAct.RESULT_OK, intent); 
     ((Activity)v.getContext()).finish(); 
    } 
} 

在您的調用活動中覆蓋onActivityResult來處理結果。 OUR_REQUEST_CODE是您在調用startActivityForResult時發送的請求代碼。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode){ 
     case OUR_REQUEST_CODE: 
      if(resultCode == RESULT_OK) { 
       //Do something useful with data 
      } 
      break; 
    } 
} 
0

將數據傳回活動A,你應該使用功能setResult結合您的startActivityForResult

看到這個答案:

https://stackoverflow.com/a/14118010/238180

+0

你好,謝謝你。我知道,問題是我需要調用適配器類中的setResult –

0

你必須設置你的activity B中的結果,你不需要Adapter.setActivity(TaskGeoSetActivity.this); 只是this.setResult(parentAct.RESULT_OK, intent);

private final OnClickListener locpicker = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     ActivityB.this.setResult(...); 
     finish(); 
    } 
+0

嗨,這對點擊偵聽器是在基礎適配器內。 「這個。」不識別ActivityB。我知道activityB中的setResult會將它傳回給A,但我如何從Adapter中傳遞它? 最好的問候 –

+0

@BenDiamant SRY基因,它是ActivityB.this。而不是這個。活動B – AMerle

+0

嗨!我得到「類型ActivityB沒有外圍實例是在範圍訪問」錯誤在該行: ActivityB.this.setResult(ActivityB.RESULT_OK,意圖); –