2014-01-02 1 views
0

У меня есть способ. Используя этот метод, я запускаю один ListActivity. Вот мой исходный код.Деятельность не возвращается

private void onCollectionClicked() { 
     Intent i = new Intent(getBaseContext(), FileDialog.class); 
     i.putExtra(FileDialog.START_PATH, last_folder); 
     startActivityForResult(i, PICK_FILE_CODE); 
    } 

В запуске ListActivity у меня есть кнопка отмены. Если я нажму на эту кнопку, она вернется к MainActivity. Вот мой исходный код

cancelButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       setResult(RESULT_CANCELED); 
       finish(); 
      } 

     }); 

Моя проблема: ListActivity убит, но он не возвращается к MainActivity. Как я могу решить эту проблему?

+1

Где это происходит тогда? вы закончили –

+0

В MainActivity должен быть код метода 'onActivityResult()'. Пожалуйста, поделитесь этим кодом, я считаю, что этот метод содержит инструкцию 'finish();', поэтому MainActivity убивается. – Vigbyor

+0

Это может быть что-то в вашем файле манифеста, например noHistory –

ответ

0

Извините. Этот вопрос неверен. На самом деле я не знаю, как убить мою MainActivity. Это мой код onPause.

@Override 
    public void onPause() { 
     super.onPause(); 

     //safe close.. 
     android.os.Process.killProcess(android.os.Process.myPid()); 
    } 

Спасибо @Pankaj kumar. Из-за вашего комментария, я проверил мой код метода onPause.

+1

, пожалуйста, не убивайте свою 1-ю деятельность –

1

В следующем примере кода показано, как запускать и устраивать метод startActivityForResult().

public void onClick(View view) { 
    Intent i = new Intent(this, ActivityTwo.class); 
    i.putExtra("Value1", "This value one for ActivityTwo "); 
    i.putExtra("Value2", "This value two ActivityTwo"); 
    // Set the request code to any code you like, you can identify the 
    // callback via this code 
    startActivityForResult(i, REQUEST_CODE); 
} 

Если вы используете метод startActivityForResult() затем начал деятельность называется Суб-активность.

Если подзадание завершено, он может отправить данные обратно своему вызывающему абоненту через Intent. Это делается в методе послевкусие()

@Override 
public void finish() { 
    // Prepare data intent 
    Intent data = new Intent(); 
    data.putExtra("returnKey1", "Swinging on a star. "); 
    data.putExtra("returnKey2", "You could be better then you are. "); 
    // Activity finished ok, return the data 
    setResult(RESULT_OK, data); 
    super.finish(); 
} 

После отделки суб-деятельности, метод onActivityResult() в вызывающем деятельности можно назвать.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { 
    if (data.hasExtra("returnKey1")) { 
     Toast.makeText(this, data.getExtras().getString("returnKey1"), 
     Toast.LENGTH_SHORT).show(); 
    } 
    } 
} 
Смежные вопросы