[英]Make a method call as soon as back button has been pressed (Android)
在给定的活动中,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);
}
});
班级成员
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;
}
}
您可以Override
调用Activity
的onResume()
方法。 一旦用户按下“后退” button
, onResume()
方法肯定会被调用,所以你应该可以在这里调用你的方法
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)
这是该活动是否对用户可见的最佳指标。
系统可以显示系统级窗口(例如状态栏通知面板或系统警报),它将暂时占用窗口输入焦点而不暂停前台活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.