2013-01-02 116 views
0

我已创建子类TabActivity并且它包含四个TabHost选项卡。onActivityResult()不会在TabActivity内部调用

我只是想从我的应用程序挑选接触,为了这个,我现在用的是下面的代码

private final int PICK = 2; 
Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    parentActivity.startActivityForResult(intentContact, PICK); 

Android的联系人选择器屏幕调用成功,当我点击任何接触它重定向我的最后一个画面我的应用程序在那里我调用它,但onActivityResult方法不会被调用。

在这方面,我需要你的帮助。如果我忘记提及任何事情,请告诉我。

+0

哪里是你的onActivityResult方法重写?它是否在parentActivity? – mig35

+0

不是。它在同一活动上。 – kaif

+0

所以这是一个答案。您应该调用简单的startActivityForResult(而不是parentActivity.startActivityForResult)或重写父活动中的onActivityResult。现在结果正在返回。 – mig35

回答

0

TabActivity有几个奇怪的行为,这可能就是其中之一,你可以解决它,使其工作,但我肯定会建议你开始放弃它,它已被弃用,因为API级别13。它:(https://developer.android.com/reference/android/app/TabActivity.html

+0

我的应用程序指向API级别10.如果我放弃它,我的工作将被浪费。你有其他的选择吗? – kaif

+0

Android支持V4包与Android 4及更高版本兼容。所以可以使用它的期货。 – mig35

1

因为你想这里是一些代码的东西。

public class MyActivity extends TabActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
      super.onCreate(savedInstanceState); 

      // some other stuff 

      TabHost.TabSpec firstTab = tabHost.newTabSpec("firstTab"); 

      firstTab.setContent(new Intent(this, FirstTabActivity.class)); // your class with content picker 

      tabHost.addTab(firstTab); 
    } 
} 

这里是干什么的其他

public class FirstTabActivity extends Activity 
{ 
    private static final int PICK_REQUEST_CODE = 2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
      super.onCreate(savedInstanceState); 

      // some stuff 

      Button pickContactButton = findViewById(R.id.btn_pick_contact); 

      pickContactButton.setOnClickListener(new View.OnClickListener() 
      { 
        @Override 
        public void onClick(View view) 
        { 
          Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
          startActivityForResult(intentContact, PICK_REQUEST_CODE); 
        } 
      }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      super.onActivityResult(requestCode, resultCode, data); 

      if(PICK_REQUEST_CODE == requestCode && resultCode == RESULT_OK) 
      { 
        // do some stuff 
      } 
    } 
} 
0

其他方法是......

1.On button click(which you want to open intent) open another activity. 
2.On another activity's onCreate() open that intent. 
3.onActivityResult set static data which is on previous activity and call finish(). 
4.This way no one ever know that you opened such a activity and you ll get your data. 
:) 
相关问题