2

図 1. これは私の create_layout です。

ここに画像の説明を入力

写真 2. これは、[メンバーの追加] ボタンをクリックしたときのカスタム連絡先リストです。

ここに画像の説明を入力

Picture 3. ここに問題があります。選択ボタンを押したとき。選択した連絡先の値を最初の画像レイアウトに一覧表示したかったのです。しかし、最初のレイアウトの複製を開いてそこに表示しています。

ここに画像の説明を入力

これが私のコードです。

 @Override
        public void onClick(View v) {
            StringBuilder checkedcontacts= new StringBuilder();
            System.out.println("............"+ma.mCheckStates.size());
            for(int i = 0; i < name1.size(); i++)
                {
                if(ma.mCheckStates.get(i)==true)
                {
                     checkedcontacts.append(name1.get(i).toString());
                     checkedcontacts.append("\n"); 

                }

                else
                {
                    System.out.println("..Not Checked......"+name1.get(i).toString());
                }

            }     

            Intent i = new Intent (getApplicationContext(), CreateTab.class);
            i.putExtra("str",checkedcontacts.toString());
            startActivity(i);
            finish();                    
        }       
    });

問題は、ユーザーが選択ボタンをクリックしたときに、onCreate を繰り返す CreateTab クラスを指すようにすることです。しかし、どうすればonCreateを再び防ぐことができますか?

4

2 に答える 2

0

前のアクティビティを再度開始しないでください。セレクタ アクティビティの結果を更新するだけで、 を呼び出しますfinish()

    Intent resultIntent = new Intent(this, PreviousActivity.class);
    resultIntent.putExtra("selection",checkedcontacts.toString());
    setResult(RESULT_OK,resultIntent);
    finish();
于 2013-07-20T07:00:58.990 に答える
0

返された結果を読み取るには onActivityResult() メソッドを使用する必要があります。

CreateTab.class でこれを行います

Intent i = new Intent(getApplicationContext(), AddMember.class);
startActivityForResult(i, 100); // 100 is some code to identify the returning result

新しく作成されたアクティビティから結果を読み取るメソッド

@Override
protected void onActivityResult(int requestCode,
                                 int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == 100){
         String str = data.getExtras().get("str");
    }
}

StartActivityForResult() の使用時に結果を古いアクティビティに送り返す

Intent i = new Intent();
i.putExtra("str", checkedcontacts.toString());

// Setting resultCode to 100 to identify on old activity
setResult(100,i);

AddMemberアクティビティを閉じます

finish()

クリック イベントは次のようになります。

 @Override
        public void onClick(View v) {
            StringBuilder checkedcontacts= new StringBuilder();
            System.out.println("............"+ma.mCheckStates.size());
            for(int i = 0; i < name1.size(); i++)
                {
                if(ma.mCheckStates.get(i)==true)
                {
                     checkedcontacts.append(name1.get(i).toString());
                     checkedcontacts.append("\n"); 

                }

                else
                {
                    System.out.println("..Not Checked......"+name1.get(i).toString());
                }

            }     

              Intent i = new Intent();
              i.putExtra("str", checkedcontacts.toString());

              // Setting resultCode to 100 to identify on old activity
              setResult(100,i);
              finish();
        }       
    });

http://developer.android.com/training/basics/intents/result.html

于 2013-07-20T07:03:49.967 に答える