Java Android在bundle中接收文本时返回Null

Java Android在bundle中接收文本时返回Null,java,android,android-intent,bundle,Java,Android,Android Intent,Bundle,我不熟悉Android和Java。我试图捕获一个活动中的值,并使用捆绑包将它们传递给另一个活动。捆绑包的创建是正常的。但是当我试图在第二个活动中提取值时,我得到了空值。我做错了什么? 主要活动 //Create the bundle Bundle mybundle = new Bundle(); //Add your data to bundle mybundle.putString("One",textOne); mybundle.putString("Two",textTwo); //Add

我不熟悉Android和Java。我试图捕获一个活动中的值,并使用捆绑包将它们传递给另一个活动。捆绑包的创建是正常的。但是当我试图在第二个活动中提取值时,我得到了空值。我做错了什么? 主要活动

//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);
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);
这是在第二个活动中获取文本的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle mybundle = getIntent().getExtras();
String myText1 = mybundle.getString("One");
String myText2 = mybundle.getString("Two");
嗯。我将分享我所有的代码。我正在尝试一个非常简单的程序来学习android。在第一个屏幕上输入两个要相加的数字。将答案显示在第二个屏幕上,使用捆绑包将值从第一个屏幕传递到第二个屏幕

主要活动

//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);
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");

您正在将bundle添加到myIntent,并传递bundle不同的Intent intentstart Intent

用这个

相反

注: 如果您从Textview或EditText获得的值大于

用这个

textOne.getText.toString.trim

相反


您正在将bundle放入myIntent中,但您正在使用startinent启动活动,这就是为什么您会得到NULL值的原因。

您需要在intent中添加bundle,由谁启动活动。 请使用下面的代码

startActivity(myIntent);

在创建bundle时的第一个活动中,将其添加到要启动活动的任何目的中

i、 第一个活动中的e

//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");
}

使用myIntent而不是startinent。由于您已将bundle添加到myIntent,因此无法访问由另一个Intent调用的bundle活动

您正在myIntent中添加bundle,并使用startinent启动活动。所以使用下面的代码

startActivity(myIntent);

现在在另一个活动中,检查getIntent是否为null,然后从Intent中获取捆绑包。

您的代码正常。可能text1或text2为空。你怎么知道的?你能把你的意图代码放在这里吗。因为您正在发送带有PutExtrasmybundle start intent和StartActivityStart内容的数据。您正在向myIntent添加bundle,并且您传递了不同的intent StartIntent。请添加完整的代码。请检查StartActivityStart内容;您正在向startIntent的myIntent和startactivity添加捆绑包。我已修剪了文本,并确保startactivity行中的intent名称正确,但在第二个活动中仍然得到一个空捆绑包。让我分享我所有的经验code@Pickles57您忘记添加setContentViewR.layout.activity\u main;在您的addActivityThank Nilesh中,我添加了行setContentViewR.layout.activity\u add,应用程序现在运行。但是,bundle仍然返回空值,并且基于上面显示的AddActivity中的调试代码,两个文本视图框现在都表示FAILEDI在调试模式下运行,在字符串myText1=mybundle.getStringOne处中断;它向我展示了我的包=null实际上它既有值也有键。现在的问题似乎是从包中提取文本字符串。行字符串myText1=mybundle.getStringOne;正在返回空值。@Pickles57尝试通过类似mybundle.putStringOne的捆绑包发送硬代码字符串,数据示例;我改变了,仍然得到空值。请参阅上面的完整修订代码尝试使用ifnull=getIntent条件以获得更好的结果。有时,还可以通过以这种方式检查条件来解决nullpointerexception。
Bundle mybundle = new Bundle();
mybundle.putString("One",textOne);
mybundle.putString("Two",textTwo);
myIntent.putExtras(mybundle);
startActivity(myIntent);
startActivity(myIntent);