【问题标题】:Activity crashing on resume活动在恢复时崩溃
【发布时间】:2013-12-24 10:42:09
【问题描述】:

我在 OnCreate 中有以下内容

  requestWindowFeature(Window.FEATURE_NO_TITLE);

简历是:

  @Override
  public void onResume(){

     onCreate(savedInstanceState);
     super.onResume();

  }



    @Override
    public void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    this.savedInstanceState = savedInstanceState;
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    context = this;
    ps = PuzzleState.getInstance();
    setContentView(R.layout.activity_pack_list);
    }

在活动恢复时抛出异常:必须在添加内容之前调用 rewuestFeature。怎么了?

【问题讨论】:

  • 你为什么要通过你的代码调用onCreate()?
  • 活动在后台时,某些参数会发生变化,这需要更改 GUI。调用 onCreate() 以确保更改的参数反映在 GUI 中。
  • 可以将初始化代码移到onResume()中。

标签: android android-activity


【解决方案1】:

您需要在onCreatesetContentView 之前调用requestWindowFeature(Window.FEATURE_NO_TITLE);

【讨论】:

  • 它在 onCreate 中的 setContentView 之前被调用。它正常工作,但在恢复时崩溃。
  • 这是因为当你在恢复 requestWindowFeature(Window.FEATURE_NO_TITLE); 上调用 onCreate 时将在设置 contentview 后调用。这是因为 onCreate 将被调用两次,并且在第一次调用期间将在活动中设置内容视图。你不能在 onResume 上调用 requestWindowFeature(Window.FEATURE_NO_TITLE)。
  • requestWindowFeature(Window.FEATURE_NO_TITLE) 仅在 onCreate() 中调用。 onResume() 正在调用 onCreate()。我在 onCreate() 上用完整的代码编辑了问题。
  • 这意味着 on create 将被调用两次。第二次调用 requestWindowFeature(Window.FEATURE_NO_TITLE) 将在设置 contentView 后调用
【解决方案2】:

如果你在 onCreate() 方法之后设置了 requestWindowFeature(Window.FEATURE_NO_TITLE); 那么你必须删除它并设置

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.gallery_item);

}

【讨论】:

    【解决方案3】:

    我发现这是可行的——我是在阅读了所有提供的 cmets 和解决方案后才得到这个想法的。感谢所有回复的人。

          private static boolean first = true;
    
          @Override
          public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          this.savedInstanceState = savedInstanceState;
    
          if(first){
    
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            first = false;
          }
    
    
          context = this;
          ps = PuzzleState.getInstance();
          setContentView(R.layout.activity_pack_list);
           }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多