0

setResult を親アクティビティに戻そうとすると、onActivityResult メソッドが実行されず、ここでアプリが親で終了するという奇妙なことが起こります

@Override
    protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            Log.d("MyAPP","Access Calendar");
            //Getting the token back from authorization process
            accessToken = getIntent().getExtras().getString("token");
            // Setting up Calendar API Service
            setupCalendarConnection();
            startActivityForResult(intent.setClass(this, CalendarTasks.class),REQUEST_CAL_TASK);

    }
 @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            Log.d("MyAPP", "result arrived");

            if(requestCode==REQUEST_CAL_TASK){
                switch (resultCode){
                    case CREATE_EVENT:
                        getUserCalendars();
                        break;
                    case QUICKADD_EVENT:
                        getUserCalendars();
                        startActivityForResult(intent.setClass(this, CalendarQuickAddActivity.class),REQUEST_CAL_ACT);
                        break;
                    case VIEW_EVENTS:
                        getUserCalendars();   
                        break;
                    case CREATE_CALENDAR:
                        getUserCalendars();
                        break;
                    case EDIT_CALENDAR:
                        getUserCalendars(); 
                        break;
                }
            }

            super.onActivityResult(requestCode, resultCode, data);
        }

子供の活動はこちら

listView.setOnItemClickListener(new OnItemClickListener(){

            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                listIndex=position;
                Log.d("MyAPP", ""+position);

                switch (listIndex){
                    case 0:
                        Log.d("MyAPP","case 0"+listIndex);
                        setResult(CREATE_EVENT);
                        finish();
                        break;
                    case 1:{

                        Log.d("MyAPP","case 1"+listIndex);
                        setResult(QUICKADD_EVENT);
                        finish();
                        break;
                    }
                    case 2:
                        Log.d("MyAPP","case 2"+listIndex);
                        setResult(VIEW_EVENTS);
                        finish();
                        break;
                    case 3:
                        Log.d("MyAPP","case 3"+listIndex);
                        setResult(CREATE_CALENDAR);
                        finish();
                        break;
                    case 4:
                        Log.d("MyAPP","case 4"+listIndex);
                        setResult(EDIT_CALENDAR);  
                        finish();
                        break;
                }

            }

        });

ケース 1 とログをチェックしています cat は正しいログを出力しますが、その Log in onActivityResut メソッドを出力しません。switch ブロックを移動して finish() メソッドをオーバーライドしましたが、同じ問題が発生しました。

4

3 に答える 3

0

この線、

startActivityForResult(intent.setClass(this, CalendarQuickAddActivity.class), REQUEST_CAL_ACT);

結果が に返されることを保証しますCalendarQuickAddActivity。これは、あなたの望むことですか?

また、変数とは正確には何intentですか?グローバルですか?これは少し紛らわしいです...コードを読みやすくするために、新しいIntentwithを作成したい場合があります。new Intent(this, CalendarQuickAddActivity.class)

于 2012-05-20T23:47:31.583 に答える
0

ActivityGroup または TabGroupActivity を使用している場合は、onActivityResult(requestCode, resultCode, data) の代わりに handleActivityResult(requestCode, resultCode, data) を上書きする必要があります。

于 2012-05-21T04:37:43.633 に答える