首页 > 解决方案 > 为什么我在 dato2 中看到“null”以返回我的第二个活动?

问题描述

我正在尝试练习在那里启动活动以将值传入和传出,但我不明白如何将这个返回值缺陷作为字符串解决。

这是我需要返回字符串的第二个活动,但我在 toast 中看到“null”。

public class Activity1 extends Activity {

public String stringa = "Ciao";

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

    Intent intent = getIntent();
    Log.d("GETINTENT", "prende dato1");
    int i = 3;
    int dato1 = intent.getIntExtra("x", i);
    Toast.makeText(getApplicationContext(), "Intero Main: "+ dato1, Toast.LENGTH_LONG).show();
    setReturnIntent();
}

public void setReturnIntent() {
    Intent i = new Intent(this,MainActivity.class);
    i.putExtra("STRINGA",stringa);
    setResult(RESULT_OK, i);
    Log.d("LANCIO","lancio con setResult");
    finish();
}

这是我在 Android Studio 上的主要代码,当我放一个 int 并在 toast 中看到时

public class MainActivity extends Activity {

public int x = 5;

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

public void lanciaActivity(View v) {
    Intent i = new Intent(this,Activity1.class);
    i.putExtra("x", x);
    startActivityForResult(i,0);
    Log.d("LANCIOST","Lancio con startActivityForR");
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode != 0) return;
    if (resultCode != Activity.RESULT_OK) return;
    if (data == null) return;
    Intent intent = getIntent();
    Log.d("GETSTRING", "Preso dato2");
    String dato2 = intent.getStringExtra("STRINGA");
    Toast.makeText(getApplicationContext(), "Stringa: "+ dato2, Toast.LENGTH_LONG).show();
}

}

标签: javaandroid

解决方案


我看到您使用 inten.getStringExtra() 获取数据的第一个活动代码使用data.getStringExtra将数据从第二个活动获取到 activityResult..


推荐阅读