所以我在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)'在空对象引用上
你能给我一个错误的提示吗?
答案 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