我正在使用ViewPager
,即在MainActivity
类之上,Viewpager
类扩展片段。
问题在于,通常当我们需要一个类返回一些result
然后在传递intent
时我们使用startActivityforresult(intent,int)
因此它传递了第二个活动中捕获的结果在哪里被称为。
但是当我在mainactivity之上使用viewpager并使用floating action button
时,当我单击按钮打开第二个活动时,它会将结果返回到mainactivity而不是viewpager类
所以我的问题是如何将第二个活动的结果传递给我想要的课程?
更新::
MainActivity.java
这是我的主要类,它使用intent并从第二个活动类ActivityTwo
接收结果
我在这里做的是
startActivityForResult(intent,1);
public void onActivityresult(i,j,intent){MyFragment fragment;
fragment.onActivityReusult(i,j,intent);//Here i have passes the values
received by this class to the fragment class where i need the values but it's not working
}
答案 0 :(得分:0)
您可以使用捆绑包。 请看一下这个主题:Bundle
bookDescFragment = new BookDescFragment();
Bundle args = new Bundle();
args.putInt(BookDescFragment.MyVariabl, VariableValue);
myFragment.setArguments(args);
答案 1 :(得分:0)
最好的方法是使用Interface
创建method
。然后该片段实现了此Interface
。之后,您可以在method
中调用此onActivityResult
。您只需在onActivityResult
中获得所需的片段,然后从method
Interface
编辑:
接口示例:
public interface Interface_example {
public void onActivityResult();
}
片段示例:
public class Fragment_example extends Fragment implements Interface_example {
@Override
public void onActivityResult() {
//Here you can do whatever you want
}
}
活动示例:
public class Activity_example extends FragmentActivity {
private ArrayList<Fragment> mFragmentList;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_example);
mFragmentList = new ArrayList<Fragment>();
mFragmentList.add(new Fragment_example());
mViewPager.setAdapter(new SimpleTabPagerAdapter(
getSupportFragmentManager(), mFragmentList));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment _fragment = mFragmentList.get(mViewPager.getCurrentItem());
if(_fragment instanceof Fragment_example){
// This line will call that method previously created
((Fragment_example) _fragment).onActivityResult();
}
}
}