0

В моем проекте ActivityTwo запускается как под-активность ActivityOne, который, в свою очередь, был изменен для обработки данных, возвращаемых из ActivityTwo.Невозможно вернуть данные из подзадачи (setResult)

TextView в ActivityOne должен извлекать текст, введенный в EditText, добавленный в объект намерения, как значение ключа в ActivityTwo. Несмотря на успешный запуск, он не извлекает объект намерения.

я просматривал возможные подобные проблемы, с которыми сталкиваются и пришел через это: How to manage `startActivityForResult` on 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(); 
      } 
     }); 
    } 
} 

ответ

1

Может быть, что есть опечатка в вашем ActivityOne.onActivityResult() код?

Похоже, вы проверяете, является ли requestCode равным двум возможно различным значениям REQUEST_CODE и RESULT_OK.

1

Как Павел предположил, что ошибка была в методе 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); 
    } 
}