我有一个浮动动作按钮,可以显示小吃吧。当小吃店被解雇时,我希望将用户重定向到手机的“设置”应用程序。
这是我目前的代码。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Snackbar snackbar = Snackbar.make(findViewById(R.id.fab), msg, Snackbar.LENGTH_INDEFINITE);
snackbar.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
// what goes here?
}
});
}
});
/* putting goToSettings(this) here works fine */
}
public static void goToSettings(AppCompatActivity activity) {
final Intent i = new Intent();
i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + activity.getPackageName()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
activity.startActivity(i);
}
}
如果我将goToSettings()
调用放在与浮动操作按钮相关的代码之外,则用户将作为调用onCreate()
方法的最后一部分发送到Settings应用程序。但是,我希望解雇由浮动操作按钮单击创建的零食栏,以使用户转到“设置”应用程序,而不是自动将用户发送到那里。
我几乎可以确定goToSettings(this)
在onDismissed()
方法中无效的原因是因为this
不再指代MainActivity
。但是知道这一点,我如何从解雇小吃店将用户重定向到“设置”应用程序?