【问题标题】:What is wrong with my onResume method?我的 onResume 方法有什么问题?
【发布时间】:2016-03-06 04:32:46
【问题描述】:
@Override
protected void onResume() {
    super.onResume();
    show = (ListView)findViewById(R.id.listView);

    Intent intent = getIntent();
    String Title = intent.getExtras().getString("name");
    addArray.add(Title);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray);
    show.setAdapter(adapter); 
}

我的应用程序不断崩溃,因为我的 onResume() 方法有问题。尝试使用ArrayAdapter 创建ListView 时是否允许使用getIntent()

【问题讨论】:

  • 什么是堆栈跟踪?
  • 请贴出应用崩溃时遇到的错误
  • 两个活动之间的数据传递可以使用 Bundle 来完成,它是 oncreate() 方法的参数,所以如果你想从其他活动中获取数据,你应该在 oncreate() 中调用它并初始化oncreate 中的列表视图

标签: android listview android-intent


【解决方案1】:

如果您通过设置 bundle 启动新活动,则 getIntent().getExtra() 将按预期正常工作。

您的 getIntent().getExtra() 方法返回空值,这就是您无法初始化数组适配器的原因。检查不为空。

你可以使用:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    String Title = intent.getExtras().getString("name");
    addArray.add(Title);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, addArray);
    show.setAdapter(adapter);
}

【讨论】:

    【解决方案2】:

    如果您使用的是片段,请将findViewById 方法放在onCreateView() 中,将适配器设置在runOnUIThread() 中(如果您的代码有网络调用)并接受onCreate() 中的意图。如果您正在使用活动,您可能希望在 onCreate() 中执行这些操作。另外,使用方法通知适配器可能的数据更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多