1

私のプロジェクトでは、連絡先画面を表示します。連絡先をクリックすると、選択した連絡先を表示する必要があるダミー画面に戻ります。

今の問題は、プロジェクトの連絡先リストからクリックして連絡先を選択すると、常にダミープロジェクト画面に表示されますが、データは常に null になります。なぜそれがnullになるのかわかりません。連絡先画面を表示するための私のプロジェクトでは、多くのパスをたどりました。

1 HomeActivity->TabActivity->HomeTabFragment->BuddyFragment(連絡先画面表示用)

Buddy フラグメントでは、次のコードを書きました。

 Intent intent = new Intent();

 intent.putExtra("chaton_buddy_number", buddy.getNo());
 intent.putExtra("chaton_buddy_name", buddy.getName());

 getActivity().setResult(Activity.RESULT_OK, intent);

 getActivity().finish();
 return true;

そして、dummyApplication に次のコードを書きました。

public class MainActivity extends Activity { 
TextView tv; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
tv = (TextView)findViewById(R.id.textView1); 
Button button =(Button)findViewById(R.id.button1); 
button.setOnClickListener(new Button.OnClickListener() {

         @Override
         public void onClick(View v) {
              Intent intent = new Intent();
              intent.setAction(Intent.ACTION_SEND);
              intent.putExtra("mChatONBuddies", true);

    //Launching HomeActivity of my project because that one is the first activity. 
    //intent.setComponent(new ComponentName("com.sec.myproject", "com.sec.chaton.HomeActivity"));

            startActivityForResult(intent, 0);
        }
    });
}

ダミーのプロジェクト画面にインテント(データ)が必ず入ってきます。

次のことを試しましたが、助けにはなりませんでした。

  1. 呼び出しgetParent().getAcitivity().setResult(Activity_ResultOK, intent)
  2. Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP使用されている場所を削除しました。それも機能していません

他の提案は大歓迎です。

4

1 に答える 1

0

そのようなコールバックを行うとき、私はインターフェイスのファンです

フラグメントが含まれているアクティビティにデータを返す必要がある場合は、インターフェイスを使用してデータを処理および渡すことを検討してください。

ステップ1

フラグメントで次のインターフェイスを宣言します

public interface iContactHelper {
    public void onSelectContact(String contactNumber,String contactName);
}

ステップ2

Fragment で次のように宣言します。

iContactHelper icontactHelper;

@Override
public void onAttach(Activity a) {
    super.onAttach(a);
    icontactHelper = (icontactHelper) a;
}

Step3

連絡先情報をコンテナー アクティビティに送信する必要がある場合は、次のように呼び出します。

iContactHelper.onSelectContact(buddy.getNo(),buddy.getName());

Step4

最後に、コンテナー アクティビティに iContactHelper インターフェイスを実装させます。

@Override
public void onSelectContact(String contactNumber,String contactName) {
    Log.d("LOG","Contact Name " + contactName);
    Log.d("LOG","Contact Number " + contactNumber);
}
于 2012-10-26T05:05:35.007 に答える