2011-09-24 79 views
0

我有兩個列表的活動。如何將字符串從2個活動傳遞到另一個?

一個用於平板電腦,另一個用於普通密度電話。 當點擊列表中的項目時,它會爲列表中的任一活動啓動相同的活動。

問題是,一個項目被點擊,我有getter和setter類獲取URL爲特定項目,並把它傳遞給這樣的發射活動時...

private String URL = null; 
try{ 
     URL = com.fttech.AbstractFeedsActivity.feed_url; 

    } 
    catch(IllegalArgumentException e){ 
     e.printStackTrace(); 
     URL = com.fttech.ItemsActivity.url; 

    } 

正如你所看到的我試圖做的是嘗試和趕上。 因此,如果第一個找不到,那麼第二個將被檢索。

但它似乎沒有工作。

每次都返回null。

對於我所描述的最佳實現方式是什麼? 是我的方式邏輯?或者,還有更好的方法。

感謝

回答

2

試試這個,

 private String URL = null; 
    try{ 
      URL = com.fttech.AbstractFeedsActivity.feed_url; 
      if(TextUtils.isEmpty(URL)){ 
       URL = com.fttech.ItemsActivity.url; 
       // Pass this URL 
      } 
      else{ 
       // If its not empty then it will pass the first URL 
      } 
     } 
     catch(IllegalArgumentException e){ 
      e.printStackTrace(); 
     } 
0

無需字符串傳遞給2個活動,如果你想,只要你想,只是傳遞一個字符串到一個或儘可能多的活動,只是把他們SharedPreferences或聲明在靜態類變量和然後隨時設置/獲取。

0

傳遞值從一個活動到另一個:

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(key, value); 
startActivity(intent); 

如果你想要一些數據,從所謂的活動回來,那麼你可以使用startActivityForResult()爲:

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(key, value); 
startActivityForResult(intent, requestCode); 

在被調用的活動中,您可以設置數據爲:

setResult(RESULT_OK, intent); 

注意:在這裏您設置意圖的值並將其傳遞給setResult()。

在返回返回到調用活動,你可以通過重寫得到的數據:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == RESULT_OK){ 
     //Get data from Intent "data" and do your task here.... 
    } 
} 

注意:您可以通過基本數據類型值直通意向,如果你想通過其他的類型,那麼你必須使用捆綁像這個。

Bundle data = new Bundle(); 
data.putIntArray(key, value); 

//同樣的方式,你可以設置其他值....... //現在這個捆綁值作爲你的基本類型做設置爲意向....在活動

Intent intent = new Intent(context, CalledActivity.class); 
intent.putExtra(data); 
startActivity(intent); 

接收數據:

//

對於基本值:

DataType var_name = getIntent().getExtras().get(key); 
//

對於捆綁值:

Bundle var_name = getIntent().getExtras().getBundle(key); 
相關問題