如何将“结果”从一个类返回到已定义的类?

时间:2015-04-22 17:19:16

标签: java android android-fragments android-viewpager onactivityresult

我正在使用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
}

2 个答案:

答案 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();

        }

    }

}