public void open(){
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage(getApplicationContext().getResources().getString(R.string.searchFilterLocationMessage));
alertDialogBuilder.setPositiveButton(R.string.Ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
/*Intent intent = new Intent(Settings.ACTION_SETTINGS) ;
this.startActivity(intent);
*/
startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0);
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 0) {
Intent intent = getIntent();
finish();
startActivity(intent);
}
}//onActivityResult
答案 0 :(得分:8)
通过调用 Activity
启动 singleTask
启动模式的startActivityForResult(intent, requestCode)
会立即返回取消结果。您可以在调试器中看到它甚至在系统设置onActivityResult()
开始之前调用了 Activity
。
作为一种快速解决方法,我建议使用一个标志来指示是否调用了设置Activity
。像
设置标志
private boolean flag = false;
使用 startActivity()
取代 startActivityForResult()
@Override
public void onClick(DialogInterface arg0, int arg1) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
flag = true;
}
检查 onResume()
@Override
protected void onResume(){
super.onResume();
if (flag) {
startActivity(new Intent(this, MainActivity.class));
finish();
}
}
答案 1 :(得分:1)
启动设置意图:
startActivity(new Intent(Settings.ACTION_SETTINGS));
并在onResume()
方法中获取当前的活动:
public void onResume(){
super.onResume();
// Do your work
}
从设置屏幕返回后,系统会调用onResume()
方法,您可以在此处获取您的位置。