【发布时间】:2012-10-21 21:33:00
【问题描述】:
我目前正在使用本教程http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/ 进行网格视图。我正在尝试对其进行操作,以便将所选图片作为活动结果返回给我的主要活动,以便我可以将其设置为图像视图,然后能够稍后在其他任务中使用所选图像。
我遇到的问题是将结果返回到我的主要活动,我收到未捕获的处理程序错误。是的,我是菜鸟,所以一定要指出我的错误,任何关于我哪里出错的解释总是有助于学习。
我最初对 startActivityForResult 的调用
Button.OnClickListener buttonClickListener4 = new Button.OnClickListener() {
public void onClick(View ChoosePictureButton) {
Intent intent = new Intent(PictureActivity.this, PicPicker2.class);
startActivityForResult(intent, 2);
}
};
点击图片应该返回结果的活动
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_layout);
GridView gridView = (GridView) findViewById(R.id.grid_view);
// Instance of ImageAdapter Class
gridView.setAdapter(new ImageAdapter(this));
/**
* On Click event for Single Gridview Item
* */
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// Sending image id to PictureActivity
Intent i = new Intent();
// passing array index
i.putExtra("id", position);
setResult(Activity.RESULT_OK, i);
finish();
}
});
}
}
我希望我的原始活动在哪里捕获结果
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if(reqCode == 1) { for another activity result.... }
else if (reqCode == 2) {
Intent i = getIntent();
// Selected image id
int position = i.getExtras().getInt("id");
ImageAdapter imageAdapter = new ImageAdapter(this);
ChosenImageView.setImageResource(imageAdapter.mThumbIds[position]);
}
}
}
是的,我可能把它宰了,但它应该让我知道我正在尝试什么。我的 logcat 在下面。
10-21 16:41:30.839: E/AndroidRuntime(4978): Uncaught handler: thread main exiting due to uncaught exception
10-21 16:41:30.869: E/AndroidRuntime(4978): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {jtek.industries.com/jtek.industries.com.PictureActivity}: java.lang.NullPointerException
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread.deliverResults(ActivityThread.java:3329)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3371)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread.access$2700(ActivityThread.java:119)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.os.Handler.dispatchMessage(Handler.java:99)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.os.Looper.loop(Looper.java:123)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread.main(ActivityThread.java:4363)
10-21 16:41:30.869: E/AndroidRuntime(4978): at java.lang.reflect.Method.invokeNative(Native Method)
10-21 16:41:30.869: E/AndroidRuntime(4978): at java.lang.reflect.Method.invoke(Method.java:521)
10-21 16:41:30.869: E/AndroidRuntime(4978): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-21 16:41:30.869: E/AndroidRuntime(4978): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-21 16:41:30.869: E/AndroidRuntime(4978): at dalvik.system.NativeStart.main(Native Method)
10-21 16:41:30.869: E/AndroidRuntime(4978): Caused by: java.lang.NullPointerException
10-21 16:41:30.869: E/AndroidRuntime(4978): at jtek.industries.com.PictureActivity.onActivityResult(PictureActivity.java:138)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.Activity.dispatchActivityResult(Activity.java:3828)
10-21 16:41:30.869: E/AndroidRuntime(4978): at android.app.ActivityThread.deliverResults(ActivityThread.java:3325)
【问题讨论】:
-
你的
onActivityResult()-方法中有什么? -
添加了 onActivityResult() 它是一个基于 reqCodes 的 switch 语句,我省略了第一个的代码,因为它可以正常工作并且有很多。
-
您是否有任何理由使用
getIntent()-方法获得意图?我认为您得到的意图不包含结果数据,而是启动活动的意图(可能为空)。看看使用提供的Intent data-参数是否可以解决您的问题。 -
试图获取在第二个活动 Intent i = new Intent(); 中设置的意图。我认为这也是我的问题所在,但我无法弄清楚如何使用结果数据将其更改为正确的意图。有没有机会澄清一下?
-
你的男人@Lukas Knuth!把你的最后一条评论作为答案,这样我就可以接受了,不得不修改一下,但你让我朝着正确的方向前进并让它发挥了作用。
标签: android android-intent android-activity android-gridview