我在MainActivity中有这个代码:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView=null;
if (getArguments().getInt(ARG_SECTION_NUMBER)==1){
rootView = inflater.inflate(R.layout.fragment_main, container, false);
final Button newProdButton = (Button) rootView.findViewById(R.id.new_prod_button);
newProdButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent (getActivity(), NewProdActivity.class);
startActivityForResult (intent, OK_NEW_PRODUCT);
}
});
之后:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==OK_NEW_PRODUCT){
if (resultCode == Activity.RESULT_OK) {
Intent intent = new Intent (MainActivity.this, ProductActivity.class);
startActivity(intent);
}
}
}
目的是在第一个活动结束时开始第二个活动,以防后者成功完成所有操作。
但是,当我结束第一个任务时,没有任何反应,应用程序仍然在MainActivity
上。为什么呢?
答案 0 :(得分:0)
在达到requestCode
时检查resultCode
和onActivityResult
的值。
实际上,如果第一个Activity没有调用setResult(RESULT_OK)
,android将为您返回RESULT_CANCELED
,并且永远不会达到第二个startActivity调用。
答案 1 :(得分:0)
在完成第一项活动之前,你必须setResult(RESULT_OK)
答案 2 :(得分:0)
您的MainActivity
代码表明它是一个片段。如果是这样,那么使用:
getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);
而不是:
startActivityForResult (intent, OK_NEW_PRODUCT);
答案 3 :(得分:0)
我解决了以下列方式编写代码的问题:
getActivity().startActivityForResult (intent, OK_NEW_PRODUCT);