我正在尝试将一个活动意图中的变量引入另一个活动,并使用它设置textview。这是一些代码:
//First Activity
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor c = mNotesCursor;
c.moveToPosition(position);
Intent i = new Intent(this, showID.class);
i.putExtra(HDWDBHelper.KEY_ROWID, id);
myId = String.valueOf(id);
i.putExtra(myId, id);
Log.v("ID: ", myId);
startActivityForResult(i, ACTIVITY_SHOW);
}
//Second Activity
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.showid);
idNumber = (TextView) findViewById(R.id.textView1);
Intent myIntent = getIntent();
Bundle b = myIntent.getExtras();
Long id = b.getLong("id");
String myId = String.valueOf(id);
Log.v("ShowID: ", myId);
idNumber.setText(myId.toString());
}
我看不出我做错了什么。
答案 0 :(得分:0)
myId = String.valueOf(id);
i.putExtra(myId, id);
您使用的是id值作为键。
myId = "id";
应该有效
编辑*:如果你想要传递一个字符串,那么
myId = String.valueOf(id);
i.putExtra(myId, "id");
然后收到它
String myId = b.getString("id");
答案 1 :(得分:0)
您可以将原始数据从一个活动传递到另一个活动,如下所示。
定义常量,该常量将用作传递数据的键。
public static final String EXTRA_YOUR_KEY = "EXTRA_YOUR_KEY";
将值作为密钥对添加到您用于开始新活动的Intent
。
// code snippet for first activity
long myId = 10;
Intent activityIntent = new Intent(activity-context, ClassNameOfNewActivity.class);
activityIntent.putExtra(EXTRA_YOUR_KEY, myId);
startActivity(activityIntent);
接下来,在新活动的onCreate()
中,将传递的值提取为
// code snippet from second activity's onCreate method
Intent intent = getIntent();
long id = intent.getLongExtra(ClassNameWhichContains.EXTRA_YOUR_KEY, 0);
我使用long
作为示例,因为您尝试传入long
变量。同样,你可以计算出其他原语。
要在两个活动之间传递自定义对象,您可以参考this。
希望这有帮助。
答案 2 :(得分:0)
如上所述,额外内容实际上是键值对,因此当插入附加内容时,您必须使用接收方已知的“密钥”,以便能够通过该名称从捆绑中提取该值。不幸的是,关键可能是你所使用的任何东西,但这个值并不是你在接收器方面所知道的。试试这个 -
发送方:
i.putExtra("id", id);
接收方:
Long id = b.getLong("id");