簡體   English   中英

無法從子活動返回數據(setResult)

[英]Cant Return Data From a Sub-Activity (setResult)

在我的項目中,ActivityTwo是作為ActivityOne的子活動啟動的,而該活動又被修改為處理從ActivityTwo返回的數據。

ActivityOne中的TextView應該檢索輸入到EditText中的文本,該文本作為ActivityTwo中的鍵值添加到意圖對象中。 盡管啟動成功,但它不會提取意圖對象。

我研究了可能遇到的類似問題,並遇到了以下問題: 如何在Android上管理`startActivityForResult`?

但是,我仍然不知道為什么我的TextView無法設置從第二個活動檢索的意圖對象中提取的文本。

任何有用的幫助表示贊賞。

在此先感謝您在下面可以看到代碼:

ActivityOne

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM