我的对话框是android:theme="@android:style/Theme.Holo.Dialog"
中定义的主题为AndroidManifest.xml
的活动。当我从Activity A
开始活动时:
Intent myIntent = new Intent(this, MyActivityAsDialog.class);
startActivityForResult(myIntent, REQUEST_DIALOG_ID);
在调用之后我曾预料到:
setResult(Activity.RESULT_OK);
finish();
在MyActivityAsDialog
onActivityResult()
会触发Activity A
我启动活动的MyActivityAsDialog
。
问题是,onActivityResult
已正确启动,已正确完成,但Activity A
中的@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("EditImageActivity:", "onActivityResult............");
//code to handle return values comes here
}
从未被调用。
<activity
android:name="my.package.MyActivityAsDialog"
android:label="@string/title_activity_choose_color_dialog"
android:theme="@android:style/Theme.Holo.Dialog"
android:parentActivityName="my.package.ActivityA" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="my.package.ActivityA" />
</activity>
的AndroidManifest.xml:
public class MyActivityAsDialog extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_choose_color_dialog);
setTitle(R.string.colors_content_description);
//and others setup stuff
}
//from layout.xml
public void cancel(View view) {
setResult(Activity.RESULT_OK);
finish();
}
}
MyActivityAsDialog
activity_my_activity_as_dialog.xml
myActivityAsDialog 布局(<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".ChooseColorDialogActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="cancel"
android:text="@android:string/cancel" />
</LinearLayout>
)
public class ActivityA extends Activity {
public static final int REQUEST_COLOR_DIALOG = 0xDAFFDEBB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_a);
//and other setup stuff
}
//from layout.xml
public void selectColor(View view) {
Intent myIntent = new Intent(this, MyActivityAsDialog.class);
startActivityForResult(myIntent, REQUEST_COLOR_DIALOG);
}
}
ActivityA:
{{1}}
答案 0 :(得分:2)
在MyActivityAsDialog.class的xml文件中,在最顶层的视图中添加以下行
tools:context=".ActivityA"
答案 1 :(得分:1)
您可以尝试几件事
android:launchMode="singleTop"
MyActivityAsDialog
REQUEST_DIALOG_ID
值大于0 答案 2 :(得分:1)
您将ur set结果放在方法
中cancel(View view)
你称之为这种方法的地方。检查此方法是否正确调用。