【发布时间】:2018-01-16 09:13:34
【问题描述】:
我有一个基类来检查应用程序是否从历史记录中启动,并且没有可用的应用程序进程,然后将用户重定向到MainActivity。
这是我的基类代码;
public abstract class BaseActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
if(MainActivity.instance == null){
//instance is a static variable in MainActivity
Intent i= new Intent(this, MainActivity.class);
startActivity(i);
this.finish();
return;
}else{
setContentView(getLayoutRes());
}
}
//Child app override this method, and provides their layout.
protected abstract int getLayoutRes();
儿童活动
public class MapActivity extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//1000 line of code
}
@Override
protected int getLayoutRes() {
return R.layout.activity_map;
}
现在当用户从历史记录中启动应用程序时它会做什么,并且应用程序没有可用的进程,然后它读取BaseActivity 的检查并尝试启动MainActivity 意图,并且不设置@987654326 @,
但问题是它并没有停在那里,它转到MapActivity - onCreate() 方法并开始执行其他代码行,因为我没有设置布局,它在尝试读取 findViewById() 时崩溃,它在其他静态变量上也失败了。
因此,当进程被终止时,将用户重定向到 MainActivity 的全部意义并未完全完成。
我需要知道BaseClass启动意图时如何停止执行子类的代码
【问题讨论】:
-
添加返回;在 mainActivity 的 onCreate() 中。
-
我想在用户启动任何其他活动表单历史记录时启动或将用户重定向到 mainActivity
-
对不起,我没有明白你的意思。历史意味着如果用户从 1 个活动转到 9 个活动,他们现在都在历史记录中,活动 10 已经在历史记录中,而不是必须重定向到 MainActivity ?我说的对吗?
-
不要使用静态字段来存储信息。您可以为此使用实例状态。
-
如果父类
Activity启动MainActivity 和true如果父类Activity调用@987654337,你为什么不让父类有一个字段protected boolean didSetContentView分配false@?然后子类(MapActivity)可以从onCreate()返回,如果didSetContentView是false。
标签: java android android-layout android-fragments android-intent