将字符串传递给其他活动不起作用

时间:2016-12-30 10:48:58

标签: java android string android-intent

所以我在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);


}

}

所以每当我点击Button我的应用程序崩溃时。而且我不知道什么是错的。我是从Android Monitor获得的:

12-30 11:45:29.046 29591-29591 / com.example.luca.myapplication E / AndroidRuntime:FATAL EXCEPTION: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。字符串android.os.Bundle.getString(java.lang.String)'在空对象引用上

你能给我一个错误的提示吗?

6 个答案:

答案 0 :(得分:2)

首先,您使用“Kate1”关键字

发送数据
intent.putExtra("Kate1", Kat1);

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

变化

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

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

答案 1 :(得分:1)

 @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);
}
}

你开始意图我但没有在意图中增加额外的价值我认为你有意义"意图"。

答案 2 :(得分:0)

 getIntent().getStringExtra("your putString value"));

这样可行。

答案 3 :(得分:0)

你的钥匙是" Kate1"以及您使用过的另一项活动" Kategorie1"。

把同样的关键兄弟。

答案 4 :(得分:0)

在getString

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

答案 5 :(得分:0)

实际上你开始活动的意图,在那个意图的包中你没有添加要发送的字符串。

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

((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
            }
        });

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

所以只需要正确的代码如下所示:

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

在MainActivity8中,尝试使用相同的键 Kate1

获取字符串
git pull