我有一个名为Main的主Activity,它有onActivityResult方法。
protected void onActivityResult(int requestCode, int resultCode, Intent data, Bundle extras)
{
Log.i("in OnActivityResult", "in OnActivityResult");
super.onActivityResult(requestCode, resultCode, data);
Log.i("in OnActivityResult", "in OnActivityResult");
ObjectInputStream ois = null;
if(requestCode == SUB_ACTIVITY_REQUEST_CODE)
{
Log.i("in OnActivityResult IFFFF", "in OnActivityResult IFFFF");
extras = getIntent().getExtras();
byte gpBytes[] = extras.getByteArray("gpBytes");
ByteArrayInputStream bis = new ByteArrayInputStream(gpBytes);
try
{
ois = new ObjectInputStream(bis);
gpObject = (GP) ois.readObject();
}
catch (StreamCorruptedException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Log.i("GP object Values", "GP object Values<<>>"+ this.gpObject.xValue + "and <<>>" + this.gpObject.yValue);
}
在我的第二个活动中,我在按钮Action上编写了该代码。
public void onClick(View v) {
Log.i("button", "button");
goToGrifReferenceAction();
GridReferenceActivity.this.setResult(RESULT_OK, getIntent().putExtra("gpObject", GridReferenceActivity.this.gpBytes));
GridReferenceActivity.this.finish();
}
所以现在问题是第二个活动结束了。 onActivityResult不会在主要活动中调用...任何人都可以告诉我哪里出错了。
我正在调用这样的第二个活动。
@Override
public void onClick(View v)
{
Intent i = new Intent(Main.this, GridReferenceActivity.class);
startActivityForResult(i, SUB_ACTIVITY_REQUEST_CODE);
}
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.anquetMap"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable = "true">
<activity android:name=".Main"
android:label="@string/app_name" android:configChanges="keyboardHidden|orientation" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".GridReferenceActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.GridReferenceActivity"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我会非常感谢他。 非常感谢。
答案 0 :(得分:4)
你的两项活动必须在同一个任务中......
你有没有在android:launchMode? p>中定义“singleTask”
答案 1 :(得分:0)
如何使用
开始第二项活动startActivity(意图)
或
startActivityForResult(Intent intent,int requestCode)
你应该使用
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, SUB_ACTIVITY_REQUEST_CODE);
答案 2 :(得分:0)
并且有效。