【问题标题】:Passing a String to other activity did not work将字符串传递给其他活动不起作用
【发布时间】:2016-12-30 10:48:58
【问题描述】:

所以我在 MainActivity2 中有一个 textEdit 字段。我会将它的字符串传递给 MainActivity8。如果单击按钮,您将转到 MainActivity8。

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

    ((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Intent i = new Intent(MainActivity2.this, MainActivity8.class);

            EditText et1 = (EditText) findViewById(R.id.editText2);
            String Link1 = et1.getText().toString();

            EditText et = (EditText) findViewById(editText1);
            String Kat1 = et.getText().toString();


            if (Link1.matches("") || Kat1.matches("")){
                et.setHintTextColor(RED);
                et1.setHintTextColor(RED);
            }
            else {
                startActivity(i);
            }

            Intent intent = new Intent(MainActivity2.this, MainActivity8.class);
            intent.putExtra("Kate1", Kat1);
        }
    });

MainActivity8 看起来像这样:

public class MainActivity8 extends AppCompatActivity {

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

    Intent intent = getIntent();
    String Kategorie1 = intent.getExtras().getString("Kategorie1");

    TextView tv = (TextView) findViewById(R.id. textView2);
    tv.setText(Kategorie1);


}

}

所以每次单击按钮时,我的应用程序都会崩溃。而且我不知道怎么了。我从 Android 监视器得到这个:

12-30 11:45:29.046 29591-29591/com.example.luca.myapplication E/AndroidRuntime: 致命异常: main 进程:com.example.luca.myapplication,PID:29591 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.luca.myapplication/com.example.luca.myapplication.MainActivity8}:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android. os.Bundle.getString(java.lang.String)' 在空对象引用上

你能告诉我有什么问题吗?

【问题讨论】:

    标签: java android string android-intent


    【解决方案1】:

    首先,您使用“Kate1”关键字发送数据

    intent.putExtra("Kate1", Kat1);
    

    并使用不同的键“Kategorie1”获取数据

    改变

    intent.getExtras().getString("Kategorie1");
    

    intent.getExtras().getString("Kate1");
    

    【讨论】:

    • 嘿,我改了,但还是没用。
    • 另外,他以i:startActivity(i);为意图启动活动,但将数据放入intent
    • 检查你的 startActivity 方法,它应该在意图这一行之后“Intent intent = new Intent(MainActivity2.this, MainActivity8.class); intent.putExtra("Kate1", Kat1);"开始活动(意图)
    【解决方案2】:
     @Override
     protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main2activity);
    
    ((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText et1 = (EditText) findViewById(R.id.editText2);
            String Link1 = et1.getText().toString();
    
            EditText et = (EditText) findViewById(editText1);
            String Kat1 = et.getText().toString();
    
    
            if (Link1.matches("") || Kat1.matches("")){
                et.setHintTextColor(RED);
                et1.setHintTextColor(RED);
            }
            else {
          Intent intent = new Intent(MainActivity2.this, MainActivity8.class);
            intent.putExtra("Kate1", Kat1);
                startActivity(intent );
            }
    
    
        }
    });
    

    和 MainActivity8.class

      public class MainActivity8 extends AppCompatActivity {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main8);
    
    String Kategorie1 =getIntent().getStringExtra("Kate1");
    
    TextView tv = (TextView) findViewById(R.id. textView2);
    tv.setText(Kategorie1);
    }
    }
    

    您开始意图 i,但没有在意图 i 中添加额外的价值,您将价值 Intent “意图”。

    【讨论】:

      【解决方案3】:

      您的密钥是“Kate1”,而您在另一个活动中使用了“Kategorie1”。

      把相同的钥匙兄弟。

      【讨论】:

        【解决方案4】:

        在getString之前检查null

          Bundle bundle= getIntent().getExtras();
          if (bundle!= null) {
          link = bundle.getString("Kate1");
          }
        

        【讨论】:

          【解决方案5】:
           getIntent().getStringExtra("your putString value"));
          

          这会起作用。

          【讨论】:

            【解决方案6】:

            实际上,您启动活动的意图,在该意图的包中,您没有添加要发送的字符串。

            从您的代码中,您正在创建一个我喜欢这样的意图

             Intent i = new Intent(MainActivity2.this, MainActivity8.class);
            

            并使用该意图 "i" 启动活动,但您没有将字符串放入该意图对象中。

            所以你的正确代码应该如下所示:

            ((Button) findViewById(R.id.weiter)).setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
            
            
                            Intent i = new Intent(MainActivity2.this, MainActivity8.class);
            
                            EditText et1 = (EditText) findViewById(R.id.editText2);
                            String Link1 = et1.getText().toString();
            
                            EditText et = (EditText) findViewById(editText1);
                            String Kat1 = et.getText().toString();
            
            
                            if (Link1.matches("") || Kat1.matches("")){
                                et.setHintTextColor(RED);
                                et1.setHintTextColor(RED);
                            }
                            else {
                                i.putExtra("Kate1",Kat1);
                                startActivity(i);
                            }
            
                            //remove this intent,as not required
                        }
                    });
            

            并在 MainActivity8 中,尝试获取具有相同键 Kate1

            的字符串
            intent.getExtras().getString("Kate1");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-04-10
              • 2020-10-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多