1

子アクティビティから戻ると、mainActivity で onActivityResult が呼び出されません。子アクティビティで finish() を使用しています。理由を教えてください。

前もって感謝します。

主な活動

private void goToHomePage() { 
    if(connected){
        basket.putString(key, "dummy");
        Intent i = new Intent(Splash.this,HomePage.class);
        i.putExtras(basket);
        startActivityForResult(i,0);  
    }else{
        alert(); 
    } 
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data); 
    basket = data.getExtras();  
    Log.i("Splash","on activity result...");
    if (resultCode == RESULT_OK){  
        switch(requestCode){ 
        case 0:

            wifi.disConnect();
            break;
        }

    }
}

子供の活動

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.i("HomePage","onKeyDown");
        sendBack("close"); 
    }
    return super.onKeyDown(keyCode, event);
}

public void sendBack(String command) { 
    Intent sendBack = new Intent(); 
    Bundle basket1 =new Bundle();
    basket1.putString("command", command);  
    sendBack.putExtras(basket1);
    setResult(RESULT_OK, sendBack);
    finish();   
}
4

3 に答える 3

0

なぜあなたは持っていますか

    // TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data); 

あなたのonActivityResult?これは必須ではなく、コントロールがこのステートメントに到達し、ロジックの前にメソッドから抜け出していると思います。他のコメントと同様に、制御がこのステートメントに達した場合、デバッグを段階的にチェックアウトしましたか?

于 2013-02-03T08:28:23.790 に答える
0

これは私の失敗です。mainActivityのonPauseでfinish()を指定しました。子アクティビティに移動すると、アクティビティが閉じます。再度、感謝します !

于 2013-02-08T03:26:47.793 に答える
0

ユーザーが戻るキーを押したときにメイン アクティビティに何かを渡そうとしていますか? その場合、これを試してください:

  1. 子アクティビティで、 を削除しonKeyDown()ます。
  2. 子アクティビティで、これを追加します:

    @Override
    public void onBackPressed()
    {
        String command = "close";
    
        Intent sendBack = new Intent(); 
        Bundle basket1 =new Bundle();
        basket1.putString("command", command);  
        sendBack.putExtras(basket1);
        setResult(RESULT_OK, sendBack);
        finish(); 
        // Do not call super.onBackPressed() so as to ignore the default implementation.
    }
    
于 2013-02-03T08:48:32.743 に答える