我有两个列表活动。
一个用于平板电脑,一个用于普通密度手机。 单击列表中的项目时,它会为列表的任一活动启动相同的活动。
问题是当点击一个项目时我有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。
我已经描述了实现这个的最佳方法是什么? 我的逻辑方式是什么?或者有更好的方法。
由于
答案 0 :(得分: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();
}
答案 1 :(得分:0)
如果您只想将字符串传递给一个或多个活动,只需将它们传递给 SharedPreferences ,或者在静态类中声明一个变量,那么就不需要将String传递给2个活动。随时设置/获取它。
答案 2 :(得分:0)
将值从一个活动传递到另一个活动:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivity(intent);
如果您想从被调用的Activity返回一些数据,那么您可以使用startActivityForResult()作为:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivityForResult(intent, requestCode);
在被叫活动中,您可以将数据设置为:
setResult(RESULT_OK, intent);
注意:在这里设置intent的值并将其传递给setResult()。
在返回调用Activity时,您可以通过覆盖来获取数据:
@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....
}
}
注意:您可以通过Intent传递原始数据类型值,如果要传递其他类型,则必须像这样使用Bundle。
Bundle data = new Bundle();
data.putIntArray(key, value);
//同样可以设置其他值....... //现在将此Bundle值设置为Intent,就像处理基本类型....
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(data);
startActivity(intent);
在活动中接收数据:
//对于原始值:
DataType var_name = getIntent().getExtras().get(key);
//对于Bundle值:
Bundle var_name = getIntent().getExtras().getBundle(key);