0

このトピックに関していくつかの質問がありますが、私はこれに対する正しい答えを見つけることができませんでした.

ログインアクティビティを呼び出しているところからメインアクティビティ(これはタブビューの1つのアクティビティです)があります。

    Button chdbtn=(Button)findViewById(R.id.Add);
    chdbtn.setOnClickListener(new OnClickListener() {   
        @Override
        public void onClick(View v) {
        Intent myIntent = new Intent(main.this, Login.class);
            startActivityForResult(myIntent, 1001);
    }
    }); 


protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == 1001)
        {
            if(resultCode == RESULT_OK)
            {
                          Log.i("Info","Inside");
            }
        }
}

そして私のログインクラスでは、ボタンをクリックすると、これをやっています

    Button chdbtn=(Button)findViewById(R.id.Addchild); 
    chdbtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
                Intent Ireturn = new Intent();
                setResult(RESULT_OK,Ireturn);
                finish();
        }
    });

しかし、ログイン アクティビティのボタンをクリックすると、コントロールがメイン アクティビティの onActivityResult メソッドに到達しません。誰でも何が問題なのか教えてもらえますか?


VIJAYapp.sample.ChildEntry1$1/onClick:23

INFO/ActivityManager(59): 開始アクティビティ: Intent { cmp=app.sample/.ChildLogin }

WARN/ActivityManager(59): 非アクティビティ コンテキストから呼び出された startActivity。forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { cmp=app.sample/.ChildLogin }

DEBUG/PhoneWindow(999): フォーカスのあるビュー com.android.internal.policy.impl.PhoneWindow$DecorView@43e4b620 に ID がないため、フォーカスのあるビューを保存できませんでした。

INFO/ActivityManager(59): 表示されたアクティビティ app.sample/.ChildLogin: 460 ms (合計 460 ms)

INFO/VIJAY(999): VIJAYapp.sample.ChildLogin$1/onClick:24


上記は、ボタンをクリックしたときに取得しているログです。アクティビティに問題があることがわかります.何か答えはありますか?

4

2 に答える 2

1

あなたの問題は今解決されたと思います。コードにいくつかの変更を加え、onActivityResult が呼び出されるようになりました (変更されたコードを確認してください: http://www.4shared.com/file/_VR3zi28/CopySampleApptar.html ?):

1.-ログイン アクティビティ クラスを呼び出すときは、次を使用します: getParent().startActivityForResult(myIntent, 1001);

私は Android にあまり詳しくありませんが、アクティビティ間のフローを制御するのは ActivityGroup クラスであることは理解しています。そのため、ActivityGroup インスタンスを使用してアクティビティを開始する必要があります。前の行で getParent() は ActivityGroup を参照します。

2.-ActivityGroup インスタンスを使用するため、onActivityResult もそのクラスに配置する必要があります。

于 2011-06-15T09:30:13.037 に答える
0

行の置き換えを検討してください

        Intent Ireturn = new Intent();
        setResult(RESULT_OK,Ireturn);

setResult(RESULT_OK,getIntent());    

getIntent() は、ログインを開始したアクティビティを返します。

于 2011-06-14T16:57:02.233 に答える