2011-10-04 69 views
3

當用戶點擊按鈕時,它想要調用對話框 - 該對話框包含ListView中的產品列表。用戶選擇產品後,它應該進入高級活動。startActivityForResult似乎沒有調用onActivityResult

我已經使用startActivityForResult()

存在一些問題。我的調用活動是在正常選項卡活動中,選項卡活動組中的正常選項卡活動。

Actualy我想在drrop下來(微調)。在我scanerio我不能讓context.It awalys給Android Spinner Error : android.view.WindowManager$BadTokenException: Unable to add window

所以,我必須改變我的設計是這樣做的:當用戶點擊buttion它加載ListView中的產品列表。選擇產品後,它將返回到之前的活動。

This is my previous question : link

這裏呼籲活動:

//Click Product button 
    l_prod.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      Intent showContent = new Intent(LineDiscountActivity.this,ListProductActivity.class); 
      Bundle bundle = new Bundle(); 
      bundle.putString("Activity", "LineDiscountActivity"); 
      bundle.putString("RetailerName", retailerName); 
      bundle.putString("RetailerCode", retailerCode); 
      showContent.putExtra("discountProduct", discountList); 
      showContent.putExtras(bundle); 
      getParent().startActivityForResult(showContent, 5); 
     } 
    }); 

我的接收器的工作:

@Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
      Object o = this.getListAdapter().getItem(position); 
      String book = o.toString(); 
      Intent i = new Intent(); 
      Bundle bundle = new Bundle(); 
      bundle.putString("Activity", "ListProductActivity"); 
      bundle.putString("RetailerName", retailerName); 
      bundle.putString("RetailerCode", retailerCode); 
      bundle.putString("seletcedProductCode", products.get(position).getProductCode()); 
      bundle.putString("seletcedProductName", products.get(position).getDescription()); 
      bundle.putDouble("seletcedProductQty", products.get(position).getAvailableQuantity()); 
      i.putExtra("discountProduct", discountList); 
      i.putExtras(bundle); 
      if (getParent() == null) { 
       setResult(Activity.RESULT_OK, i); 
      } else { 
       getParent().setResult(Activity.RESULT_OK, i); 
      } 
      ListProductActivity.this.finish(); 

    } 

,並呼籲活動

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
// super.onActivityResult(requestCode, resultCode, data); 
    Log.i("-requestCode from LineDisocunt--" ,"" + requestCode); 

} 

我寫個代碼(onActivityResult)在調用活動& Tab主Activty也。

我沒有去..

onActivityResult mehtod.But沒去了。

我的代碼有什麼問題。

請讓我知道,如果有人知道這個...

在此先感謝

+0

您是否將此活動作爲清單中的單個任務活動?如果是,那麼活動結果將不起作用。 – Andy

+0

我已經在清單文件中寫入了這樣的活動: '。我無法得到它是單一的任務活動。請幫我 – Piraba

+0

如果你沒有寫android:launchMode =「singleTask」那麼它應該是工作..檢查這個例子http://saigeethamn.blogspot.com/2009/08/android-developer-tutorial-for_31.html – Andy

回答

6

我有同樣的問題,我是用startActivityForResult()activity group時。

您的活動的結果會去你的活動group.You在你的第一個活動不會得到活動結果

所以,你可以通過一個公共靜態對象在你的第一個活動解決這個問題,當你調用第二個活動,你必須從第二個活動分配你的第一個活動對象,然後完成第二個活動,這樣你的第一個活動就會恢復,你可以通過在第一個activity中重寫onResume()方法來更新你的UI。你必須檢查你的對象被賦值的驗證天氣或不。

例如

你在你的第一個活動

第一次活動有一個靜態對象產品

public static Product product; 
start second activity 
startactivity(this, SecondActivity.class); 

don't finish First Activity 

你必須重載onResume()方法,然後你可以使用產品對象,它是由第二活動分配

秒活動

FirstActivity.product.setName(name); 
FirstActivity.product.setPrice(price); 

後指定的產品對象,你必須完成第二活動 像

finish() 

編輯

我得到了你的badTokenException

的問題的解決方案

這裏是解決方案

CLICK HERE

+0

謝謝。您節省了我的時間 – Piraba

+0

對不起,但在整個應用程序中使用靜態變量不是解決方案! – Leo