【问题标题】:Crashes in Android 6.0.1 after restart because of Bundle extras = getIntent().getExtras()由于 Bundle extras = getIntent().getExtras() 重启后在 Android 6.0.1 中崩溃
【发布时间】:2017-03-26 16:00:46
【问题描述】:

我正在尝试使用此代码检索变量

这是我的MainActivity

public class MainActivity extends AppCompatActivity {

  String Variable1 = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
      Variable1 = extras.getString("Variable1");
      EditText1_ET.setText(Variable1);
    }
  }
}

我正在另一个 Activity 中创建 Variable1

Intent i = new Intent(getApplicationContext(), MainActivity.class);
i.putExtra("Variable1", textview.getText().toString());
startActivity(i);

在我重新启动操作系统 (Android 6.0.1) 并启动我的应用程序之前,它运行良好,我收到应用程序停止工作的错误。

我在 Android 5.1 上尝试过,它可以正常工作。

谁能帮帮我?

【问题讨论】:

    标签: android android-intent android-activity parameter-passing


    【解决方案1】:

    遇到同样的问题,即使在检查 null 后它仍然崩溃。

    我使用了 try-catch 块,这为我解决了问题。

    【讨论】:

      【解决方案2】:

      看来您已经解决了问题。然而,我虽然需要在这里提出我的建议。

      从您传递参数值的Activity2,您真的需要从TextView 获取文本吗?因为,您已经在 TextView 某处设置了一些 String 值。只需使用该String 变量将值传递给另一个Activity

      Intent i = new Intent(getApplicationContext(), MainActivity.class);
      i.putExtra("Variable1", myString);
      startActivity(i);
      

      现在在MainActivity 中,检查Variable1 是否为null 并首先初始化您的EditText

      public class MainActivity extends AppCompatActivity {
      
        String Variable1 = null;
        private EditText EditText1_ET;  // Declare an EditText first
      
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          // Initialize your EditText here
          EditText1_ET = (EditText) findViewById(R.id.your_edit_text_id);
      
          Bundle extras = getIntent().getExtras();
          if (extras != null) {
            Variable1 = extras.getString("Variable1");
      
            // Here check if Variable1 is null
            if(Variable1 != null) EditText1_ET.setText(Variable1);
          }
        }
      }
      

      【讨论】:

        【解决方案3】:

        嗯,最好更改以下内容:

        SearchQueryTerm = extras.getString("Variable1");
        EditText1_ET.setText(Variable1);
        

        到:

        Variable1 = extras.getString("Variable1");
        if(EditText1_ET != null) {EditText1_ET.setText(Variable1);}
        

        在您的代码中,您每次只需将null 分配给您的EditText

        【讨论】:

          【解决方案4】:

          你应该这样做,并检查可空性:

          if (extras != null) {
          String variable1 = extras.getString("Variable1");
            if (variable1 != null) {
              EditText EditText1_ET = (EditText) findViewById(R.id.xxxx);
              if (EditText1_ET != null)
                  EditText1_ET.setText(variable1);
            }
          }  
          

          还要在设置文本之前初始化您的 EdiText 变量!

          【讨论】:

          • 酷,考虑将答案标记为正确答案,以帮助其他面临类似问题的人!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-28
          • 1970-01-01
          相关资源
          最近更新 更多