在我的一个Android应用程序中,扩展Activity,我使用onResume()来刷新从PreferenceActivity返回的活动,这样......
public class ListViewWebShort extends Activity {
ListView listView;
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
....
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
// Get ListView object from xml
listView = (ListView) findViewById(R.id.list);
....
..在这里,App按预期工作。
在我扩展AppCompatActivity的另一个应用程序中,相同的onResume()方法会使我的应用程序崩溃或循环启动:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
ListView listView;
ArrayAdapter<String> adapter;
....
@Override
protected void onResume() {
super.onResume();
this.onCreate(null);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
....
如果我在 setContentView 之前使用 requestWindowFeature(Window.FEATURE_NO_TITLE); ,我会在调试中看到App循环在 getDelegate()。setContentView(layoutResID)< / em>,在 AppCompactActivity.java 中,但如果我将其删除,则应用FC在同一功能中。 它真的让我开车疯了......我错过了什么?
提前感谢任何建议。
答案 0 :(得分:1)
不要直接调用任何活动生命周期方法。这些方法旨在从系统中调用(控制反转)。
特别是在onCreate()的超级实现中,可能会发生一些事情,如果以错误的顺序调用它们会导致崩溃。
尝试在单独的方法中提取要在onCreate()和onResume()中调用的代码,并从onCreate()和onResume()调用此方法。
答案 1 :(得分:0)
实际上在每次调用onCreate时,也会调用应用程序的onResume方法。
所以只需将您在onCreate中编写的任何代码移动到onResume。
希望它有所帮助。