2016-08-01 65 views
-1

我有主要活动有两个选项卡(片段)。在一个片段中,我正在通过startactivityforresult调用一个新的活动。在新的活动中,当按下后退按钮时,我放置结果代码。问题是片段中的“OnActivityResult”永远不会被调用,我无法确定原因!OnActivityResult不在扇区中调用

片段编码:

RequestListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      view.setSelected(true); 
      Intent SelectedRentRequest = new Intent(getActivity(), SelectedRentRequest.class); 
      SelectedRentRequest.putExtra("CarNumbers", SCarNumbers); 
      startActivityForResult(SelectedRentRequest, 1); 
     } 
    }); 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1 && resultCode == 1 && data != null) { 
     LoadList(); 
     Toast.makeText(getContext(), "hi", Toast.LENGTH_LONG).show(); 
    } 
} 

第二活动代码(背面按压部分):

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(); 
    setResult(1, intent); 
    finish(); 
} 

主要活动(标签部分):

在活动
TabLayout tabLayout = (TabLayout) findViewById(R.id.Maintab); 
    assert tabLayout != null; 
    tabLayout.addTab(tabLayout.newTab().setText("سيارات محافظتك")); 
    tabLayout.addTab(tabLayout.newTab().setText("طلبات السيارات")); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final PagerAdapter adapter = new PagerAdapter 
      (getSupportFragmentManager(), tabLayout.getTabCount(), bundle); 
    assert viewPager != null; 
    viewPager.setAdapter(adapter); 

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 
+1

http://stackoverflow.com/questions/6147884/onactivityresult-is-not-being-called-in-fragment –

回答

1

为了使您的片段onActivityResult的工作,你必须在你的活动实现它也因为的setResult方法将结果返回给它不是直接承载片段与片段

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
    } 
+0

感谢之后被调用,这解决了问题,我没有在主要活动中添加super.onActivity。 –

0

尝试增加onActivityResult ,这个将在超级调用时调用并调度到片段:

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

使活动确定您使用的是最新支持库:

compile 'com.android.support:support-v7:24.1.1' 

23.2中已修复相关错误。


还要确保父活动在清单中指定了有效的launchMode。例如。有singleTask将不起作用,该方法将立即startActivityForResult

+0

我解决了Saravlnfm解决方案的问题。但是谢谢我发现我的库也需要更新。 –