在给定的活动中,AlertDialog将用户带入WiFI设置。然后,用户按下后退按钮返回所述活动。
但是,只要按下后退按钮,我就需要进行方法调用。请注意,我不能简单地在活动中添加以下代码后的方法,因为这会影响用户与AlertDialog实例交互的时间。
只要在WIFI设置菜单中按下后退按钮,就需要进行方法调用。请告诉我如何实现这一点。
以下是代码:
alertDialog.setPositiveButton("Settings", new dialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);
}
});
答案 0 :(得分:1)
班级成员
private static final int WIFI_REQUEST = 1234;
使用startActivityForResult
alertDialog.setPositiveButton("Settings", new dialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivityForResult(intent, WIFI_REQUEST);
}
});
在活动类
中@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
switch (requestCode)
{
case WIFI_REQUEST:
// Call your method here
break;
}
}
答案 1 :(得分:1)
您可以Override
调用onResume()
的{{1}}方法。一旦用户按下“后退”Activity
,button
方法肯定会被调用,因此您应该可以将方法调用放在此处
答案 2 :(得分:0)
private boolean inwifisettings;
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
inwifisettings = true;
startActivity(intent);
}
@Override public void onWindowFocusChanged(boolean hasFocus)
{
if(inwifisettings & hasFocus)
{
doSomething();
inwifisettings = false;
}
}
为此,您不应该使用onResume()或startActivityForResult()/ onActivityResult()。引用Android文档:http://developer.android.com/reference/android/app/Activity.html
public void startActivityForResult(Intent intent,int requestCode,Bundle options)
请注意,此方法只应与定义为返回结果的Intent协议一起使用。在其他协议(例如ACTION_MAIN或ACTION_VIEW)中,您可能无法获得预期的结果。例如,如果要启动的活动使用singleTask启动模式,则它将不会在您的任务中运行,因此您将立即收到取消结果。public void onWindowFocusChanged(boolean hasFocus)
这是用户是否可以看到此活动的最佳指标 系统可以显示系统级窗口(例如状态栏通知面板或系统警报),这些窗口将临时占用窗口输入焦点而不会暂停前台活动。