Utt*_*sed 6 android android-dialogfragment onactivityresult android-8.0-oreo
我注意到的Android 7(和前)和Android 8(测试版)时调用之间的差异startActivityForResult,从一个DialogFragment.
在MainActivity下面,被压在对话框中,当"OK",解聘本身,创建并显示一个新的对话框,并调用startActivityForResult了AnotherActivity.AnotherActivity马上结束.
在Android 7 onActivityResult上,在新的对话框实例上调用.在Android 8上,onActivityResult永远不会被调用.
谁能解释这种差异?
MCVE
public class MainActivity extends AppCompatActivity {
private static final String FRAGMENT_TAG = "tag";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
new SomeDialogFragment().show(getFragmentManager(), FRAGMENT_TAG);
}
public static class SomeDialogFragment extends DialogFragment
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
super.onCreateDialog(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton(
"OK",
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface d, int which)
{
dismiss();
SomeDialogFragment dialog = new SomeDialogFragment();
dialog.show(getFragmentManager(), FRAGMENT_TAG);
startActivityForResult(new Intent(getActivity(), AnotherActivity.class), 7);
}
});
return builder.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
// Called on Android 7 but not Android 8.
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class AnotherActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setResult(1);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)