超高从子活动返回数据(setResult)



在我的项目中,ActivityTwo是作为ActivityOne的子活动启动的,而ActivityOne又被修改为处理从ActivityTwo返回的数据。

ActivityOne中的TextView应检索输入到EditText中的文本,该文本作为ActivityTwo中的键值添加到intent对象中。尽管发射成功,但它并没有提取出目标。

我仔细研究了可能面临的类似问题,并得出了以下结论:如何在Android上管理"startActivityForResult"?

然而,我仍然不明白为什么我的TextView不能设置从第二个活动中检索的intent对象中提取的文本。

感谢任何有用的帮助。

提前感谢下面你可以看到代码:

活动一

public class ActivityOne extends AppCompatActivity {
    private static final int REQUEST_CODE = 1;
    EditText isimAlani, soyadiAlani;
    TextView tlfNo;
    Button btnIleri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        isimAlani = (EditText) findViewById(R.id.isimalani);
        soyadiAlani = (EditText) findViewById(R.id.soyadialani);
        tlfNo = (TextView) findViewById(R.id.tlfno);
        btnIleri = (Button) findViewById(R.id.btnileri);
        btnIleri.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(ActivityOne.this, ActivityTwo.class);
                i.putExtra("isim", isimAlani.getText().toString());
                i.putExtra("soyisim", soyadiAlani.getText().toString());
                startActivityForResult(i, REQUEST_CODE);
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);        
        if ((requestCode == REQUEST_CODE) && (requestCode == RESULT_OK)) {
            String result = data.getExtras().getString("returnData");
            tlfNo.setText("Telefon numaranız: " + result);
        }
    }
}

活动二

public class ActivityTwo extends AppCompatActivity {
    EditText tlfNoAlani;
    TextView tvAdSoyad;
    Button btnGeri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_two);
        tlfNoAlani = (EditText) findViewById(R.id.tlfnoalani);
        tvAdSoyad = (TextView) findViewById(R.id.tvadsoyad);
        btnGeri = (Button) findViewById(R.id.btngeri);
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            tvAdSoyad.setText("Merhaba " + extras.getString("isim") + " " + extras.getString("soyisim"));
        }
        btnGeri.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent data = new Intent();
                String returnString = tlfNoAlani.getText().toString();
                data.putExtra("returnData", returnString);
                setResult(RESULT_OK, data);
                finish();
            }
        });
    }
}

可能是您的ActivityOne.onActivityResult()代码中有拼写错误吗?

看起来您检查了requestCode是否等于两个可能不同的值REQUEST_CODERESULT_OK

正如Pavel所说,错误出现在onActivityResult()方法中。

所以我在ActivityOne源文件中做了以下更改。

我简单地用resultCode替换了一个requestCode,现在它确实工作了!

再次感谢他

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if ((requestCode == REQUEST_CODE) && (resultCode == RESULT_OK)) {
        String result = data.getExtras().getString("returnData");
        tlfNo.setText("Telefon numaranız: " + result);
    }
}

相关内容

  • 没有找到相关文章

最新更新