2012-10-26 45 views
1

在我的项目中,我显示了联系人屏幕,当我点击任何联系人时,它应该返回到我需要显示选定联系人的虚拟屏幕。OnActivityResult总是返回null在Android中的意图数据

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

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的场合中使用。它也不起作用

任何其他建议,非常感谢。

+0

不BuddyFragment的活动的清单也有singletop? onActivityResult立即返回还是退出Buddyfragment之后返回? – nandeesh

+0

实际上,buddyfragment是一个通过tabActivity启动的android片段...在tabActivity中,他们设置了SINGLE_TOP,我将其删除但仍然不能正常工作.... –

回答

0

我做这样的回调

时,如果你希望你的片段应该通过数据传回其含有的活性则可以考虑使用接口来处理和传递数据是接口的风扇。在片段中的片段

第一步

申报如下界面

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

第二步

申报follwoing。

iContactHelper icontactHelper; 

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

第三步

当您需要的联系人信息发送到容器活动,呼吁以下。

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

第四步

终于有了你的容器活动实现iContactHelper接口

@Override 
public void onSelectContact(String contactNumber,String contactName) { 
    Log.d("LOG","Contact Name " + contactName); 
    Log.d("LOG","Contact Number " + contactNumber); 
} 
+1

我无法理解您尝试传达它的内容...您能否请您ellobrat更多 –

相关问题