2015-04-07 1 views
0

Я пытаюсь переопределить onBackPressed(), чтобы отправить данные на предыдущий экран с намерением;Android overriding onBackPressed() для отправки намерения

thisUserObj = (User) getIntent().getSerializableExtra("UserObj"); 


    Intent intent = new Intent(); 
    intent.putExtra("UserObj", thisUserObj); 
    setResult(RESULT_OK, intent); 

, но при нажатии кнопки значения UserObj равно нулю, однако это работает с onClickListener

Intent intent = new Intent(getApplication(), MainMenuActivity.class); 
    intent.putExtra("UserObj", thisUserObj); 
    startActivity(intent); 
+1

Возможные дублируют [Как передать данные из 2 активность до 1-го действия при нажатии? - android] (http://stackoverflow.com/questions/14292398/how-to-pass-data-from-2nd-activity-to-1st-activity-when-pressed-back-android) – MCHAppy

+0

если вы начинаете с использованием: 1. экран firsrt --- startActivityForResult() ---> второй экран --- тогда используйте setResult(). 2. первый экран --- startActivityForResult() ---> второй экран --- просто переопределите onbackpresss() и используйте startActvitiy для перехода на первый экран и передачи данных в намерении. Он должен работать –

ответ

5

Its startActivity(intent). Чтобы получить результат в onActivityResult(), он должен быть startActivityForResult().

+0

Если это сделано, то, пожалуйста, отметьте ответ как принятый. – seema

0

в первой активности

public static final int REQUEST_CODE = 100; 
.... 

Intent intent=new Intent(MainActivity.this, MainMenuActivity.class); 
intent.putExtra("UserObj", thisUserObj); 
startActivityForResult(intent, REQUEST_CODE); 


// still in first activity 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == REQUEST_CODE) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
     // do your stuff here    

     } 
    } 
} 

в вашей второй активности в вашем случае MainMenuActivity класса

thisUserObj = (User) getIntent().getSerializableExtra("UserObj"); 

Intent intent = new Intent(); 
intent.putExtra("UserObj", thisUserObj); 
setResult(RESULT_OK, intent); 
finish(); 

переопределения назад нажатии кнопки

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { //Back key pressed 
     //Things to Do 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

onKeyDown dosent похоже на вызов, когда я нажимаю стрелку назад – aaaa

+0

Если вы хотите вернуться к первой активности, когда вы нажмете на кнопку «Назад», напишите Intent intent = new Intent (Second.this, First.class); StratActivity (намерение); Конец(); –

+0

Я действительно получал «назад» и пустую кнопку «Вверх» ... – aaaa

Смежные вопросы