如果我使用onResume()方法,我会在我的应用程序中崩溃或循环

时间:2017-01-05 10:04:13

标签: android onresume appcompatactivity

在我的一个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在同一功能中。 它真的让我开车疯了......我错过了什么?

提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

不要直接调用任何活动生命周期方法。这些方法旨在从系统中调用(控制反转)。

特别是在onCreate()的超级实现中,可能会发生一些事情,如果以错误的顺序调用它们会导致崩溃。

尝试在单独的方法中提取要在onCreate()和onResume()中调用的代码,并从onCreate()和onResume()调用此方法。

答案 1 :(得分:0)

实际上在每次调用onCreate时,也会调用应用程序的onResume方法。

所以只需将您在onCreate中编写的任何代码移动到onResume。

希望它有所帮助。