【发布时间】:2014-05-08 21:50:03
【问题描述】:
我从第一个意图打印出正确的 id,但没有正确发送第二个意图。
第一次点击项目的意图: (对于后来的观众,此问题已更新为正确答案):
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
Intent intent = new Intent(videoChannelActivity.this,
PlayVideoActivity.class);
intent.putExtra("videoId", l);
System.out.println("video id intent1 = " + l);
startActivity(intent);
}
});
日志:05-08 17:40:40.505: I/System.out(13938): video id intent 1: 2
第二次创作意图:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final VideoView videoView;
setContentView(R.layout.activity_play_video);
Bundle extras;
long videoLong;
if (savedInstanceState == null) {
extras = getIntent().getExtras();
if (extras == null) {
videoLong = 0;
} else {
videoLong = extras.getLong("videoId");
System.out.println("video id intent 2 = " + videoLong);
}
}
日志:05-08 17:46:19.166: I/System.out(14382): video id intent 2 = null
【问题讨论】:
-
你放了很长时间并试图获取字符串...首先:P
-
您在第一个活动中输入了一个 Long 并且您正在检索一个字符串。更改
extras.getString(...。 -
videoLong = (Long) null这行不通,需要以不同的方式处理它,例如videoLong = 0;或者按照 Matej 的建议,使用Long videoLong;,请记住,如果在extras.getLong("videoId")中找不到该值,它将返回 0,而不是 null。 developer.android.com/reference/android/os/…
标签: android android-intent onitemclick