在Fragment类中启动另一个Activity并获取返回结果,可以使用this.startActivityForResult(),也可以使用getActivity().startActivityForResult()。那么,这两种方式有何异同呢?
先来看一个示例。
创建TestFragment类,继承自Fragment。添加一个按钮,点击后启动另一个Activity,重写Fragment类的onActivityResult()方法,打印requestCode参数。
先来看一个示例。
创建TestFragment类,继承自Fragment。添加一个按钮,点击后启动另一个Activity,重写Fragment类的onActivityResult()方法,打印requestCode参数。
package net.csdn.blog.fragment;
public class TestFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, null);
view.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// startActivityForResult(new Intent(getContext(), OtherActivity.class), 1);
// 或
// getActivity().startActivityForResult(new Intent(getContext(), OtherActivity.class), 1);
}
});
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("test", "TestFragment onActivityResult() requestCode=" + requestCode);
}
}
创建TestActivity类,继承自FragmentActivity。将上面创建的TestFragment添加进来,同样重写onActivityResult()方法打印requestCode参数。
package net.csdn.blog.fragment;
public class TestActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().replace(R.id.activity_main, new TestFragment()).commit();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("test", "TestActivity onActivityResult() requestCode=" + requestCode);
}
}