1

在我的项目中,我显示了联系人屏幕,当我单击任何联系人时,它应该返回到我需要显示所选联系人的虚拟屏幕。

现在的问题是当我从我的项目联系人列表中单击并选择联系人时,它总是出现在我的虚拟项目屏幕上,但数据总是为空。不明白为什么它为空。在我显示联系屏幕的项目中,我们遵循了很多路径。

1 HomeActivity->TabActivity->HomeTabFragment->BuddyFragment(用于显示联系人屏幕)

在好友片段中,我编写了以下代码:

 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;
}

第三步

当您需要将联系信息发送到容器活动时,请致电以下。

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

第4步

最后让您的容器活动实现 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 回答