OnActivityResult始终在Android中返回null Intent数据

时间:2012-10-26 04:39:12

标签: android

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

现在问题是当我从我的项目联系人列表中点击并选择了联系人时,它总是进入我的虚拟项目屏幕,但数据始终为空。 没有得到为什么它来为null。在我展示联系人屏幕的项目中,我们遵循了很多路径。

  

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

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

Intent(数据)总是出现在我的虚拟项目屏幕上。

我尝试了一些事情,但没有帮助我。

  1. 致电getParent().getAcitivity().setResult(Activity_ResultOK, intent)
  2. 删除了Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP使用的地方。它也无法正常工作
  3. 高度赞赏任何其他建议。

1 个答案:

答案 0 :(得分:0)

我在做这样的回调时很喜欢界面

如果您希望您的片段将数据传回其包含的活动,请考虑使用接口来处理和传递数据。

Step1

在片段中声明以下界面

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

第二步

在片段中声明以下内容。

iContactHelper icontactHelper;

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

步骤3

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

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