我是Android和Java的新手。我试图在一个活动中捕获值,并使用bundle将它们传递给另一个活动。捆绑创建好了。但是当我尝试在第二个活动中提取值时,我得到Null值。我究竟做错了什么? 主要活动
//Create the bundle
Bundle mybundle = new Bundle();
//Add your data to bundle
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
//Add the bundle to the intent
myIntent.putExtras(mybundle);
//Fire the second activity
startActivity(startIntent);
这是在第二个活动中获取文本的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle mybundle = getIntent().getExtras();
String myText1 = mybundle.getString("One");
String myText2 = mybundle.getString("Two");
行。我将分享我的所有代码。我正在尝试一个非常简单的程序来学习android。在第一个屏幕上输入两个数字一起添加。使用捆绑包在第二个屏幕上显示答案,将值从第一个屏幕传递到第二个屏幕。
主要活动
public class MainActivity extends AppCompatActivity {
EditText editNum1;
EditText editNum2;
Button addbutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editNum1 = (EditText) findViewById(R.id.editNum1);
editNum2 = (EditText) findViewById(R.id.editNum2);
Button addbutton = (Button) findViewById(R.id.button);
addbutton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent myIntent = new Intent(MainActivity.this,
AddActivity.class);
final String textOne = editNum1.getText().toString().trim();
final String textTwo = editNum2.getText().toString().trim();
//Create the bundle
Bundle mybundle = new Bundle();
//Add your data to bundle
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
//Add the bundle to the intent
myIntent.putExtras(mybundle);
//Fire the second activity
startActivity(myIntent);
确定现在AddActivity屏幕的代码我插入了一些不起作用的调试行
public class AddActivity extends AppCompatActivity {
Number gNum1;
Number gNum2;
Number total;
String myText1;
String myText2;
TextView textView;
TextView textView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle mybundle = getIntent().getExtras();
if (mybundle != null) {
String myText1 = mybundle.getString("One");
String myText2 = mybundle.getString("Two");
}
textView = (TextView)findViewById(R.id.textView);
if (myText1 != null) {
textView.setText(myText1);
}else {
textView.setText("FAILED");
}
textView2 = (TextView)findViewById(R.id.textView2);
if (myText1 != null) {
textView2.setText(myText1);
}else{
textView2.setText("FAILED");
答案 0 :(得分:2)
您需要在开始活动的意图中添加捆绑包。 请使用以下代码
startActivity(myIntent);
答案 1 :(得分:0)
您正在向myIntent
添加捆绑,并且您传递了Bundle
个不同的Intent intent(startIntent)
使用此
//Create the bundle
Bundle mybundle = new Bundle();
//Add your data to bundle
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
//Add the bundle to the intent
startIntent.putExtras(mybundle);
//Fire the second activity
startActivity(startIntent);
这是
的内容//Create the bundle
Bundle mybundle = new Bundle();
//Add your data to bundle
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
//Add the bundle to the intent
myIntent.putExtras(mybundle);
//Fire the second activity
startActivity(startIntent);
注意: 如果您从
Textview
或Editext
获得价值而不是
使用此
textOne.getText().toString().trim()
这是
的内容textOne
答案 2 :(得分:0)
你把bundle放在myIntent中,但是你正在用startIntent开始你的活动,这就是你得到NULL的原因
答案 3 :(得分:0)
在创建包时的第一个活动中,将其添加到您想要开始活动的任何目的。
即在第一项活动中
//Create the bundle
Bundle mybundle = new Bundle();
//Add your data to bundle
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
//Add the bundle to the intent
myIntent.putExtras(mybundle);
//Fire the second activity with your bundle added intent
startActivity(myIntent);
然后在第二个活动中对bundle进行空检查,然后检索它
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle mybundle = getIntent().getExtras();
if(mybundle!=null){
String myText1 = mybundle.getString("One");
String myText2 = mybundle.getString("Two");
}
答案 4 :(得分:0)
Bundle mybundle = new Bundle();
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
myIntent.putExtras(mybundle);
startActivity(myIntent);
使用myIntent而不是startIntent。由于您已将bundle添加到myIntent,因此无法访问由另一个Intent
调用的bundle活动答案 5 :(得分:0)
您正在myIntent中添加捆绑包并使用startIntent启动Activity。因此请使用以下代码
startActivity(myIntent);
现在在另一个Activity上检查getIntent是否为null,然后从Intent中获取Bundle。