Не могу вернуть данные из подоперации (setResult)
В моем проекте ActivityTwo запускается как дочерняя активность ActivityOne, которая, в свою очередь, была изменена для обработки данных, возвращаемых из ActivityTwo.
TextView в ActivityOne должен извлечь текст, введенный в EditText, добавленный к объекту намерения, в качестве значения ключа в ActivityTwo. Несмотря на успешный запуск, он не извлекает объект намерения.
Я просмотрел возможные похожие проблемы, с которыми столкнулся, и пришел к следующему: Как управлять `startActivityForResult` на Android?
Тем не менее, я все еще не мог понять, почему мой 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);
}
}
}
ActivityTwo:
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();
}
});
}
}
2 ответа
Как предположил Павел, ошибка была в методе onActivityResult().
Поэтому я сделал следующие изменения в исходном файле ActivityOne.
Просто я заменил один из requestCode на resultCode, и теперь он работает!
Еще раз спасибо ему
@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);
}
}
Может быть, в твоей опечатке ActivityOne.onActivityResult()
код?
Похоже, вы проверите, если requestCode
равняется двум возможно различным значениям REQUEST_CODE
а также RESULT_OK
,