这是我的占位符碎片
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public static int SectionNumber;
public static LayoutInflater Inflater;
public static ViewGroup Container;
public static Bundle SavedInstanceState;
public static PlaceholderFragment newInstance(int sectionNumber) {
SectionNumber = sectionNumber;
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment()
{ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Inflater = inflater;
Container = container;
SavedInstanceState = savedInstanceState;
View rootView = null;
switch (SectionNumber)
{
case 1:
rootView = inflater.inflate(R.layout.fragment_main, container, false);
break;
case 2:
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
break;
case 3:
rootView = inflater.inflate(R.layout.fragment_main, container, false);
marketActivity = new MarketActivity(context);
marketActivity.loadMarkets(rootView);
break;
case 4:
rootView = inflater.inflate(R.layout.fragment_main, container, false);
break;
}
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
Log.e("onActivityResult", "1");
if(requestCode == 0) {
if(resultCode == RESULT_OK) {
Log.e("onActivityResult", "3");
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
movementActivity = new MovementActivity(context);
movementActivity.setUp(contents);
Inflater.inflate(R.layout.fragment_movement, Container, false);
Log.e("onActivityResult", "2");
Log.i("xZing", "contents: "+contents+" format: "
+format);
// Handle successful scan
}
else if(resultCode == RESULT_CANCELED)
{ // Handle cancel
Log.i("xZing", "Cancelled");
}
}
}
}
当resultCode
为RESULT_OK
我想用Inflater.inflate(R.layout.fragment_movement, Container, false);
替换当前片段时,面对我的问题是onActivityResult我希望我能让我的问题清楚,我很抱歉对于mybad english
答案 0 :(得分:0)
也许有一种更简单的方法,但你可以做的是覆盖你开始结果活动的实际片段中的onActivityResult方法。
在您的活动中实施托管片段的接口以处理回调
public interface ActivityResultCallbacks {
void onResultOK(int request, int result);
}
在您的片段中转换并存储对回调的引用
private ActivityResultCallbacks mCallbacks;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mCallbacks = (ActivityResultCallbacks) activity;
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement ActivityResultCallbacks.");
}
}
在片段的onActivityResult
中通知回调@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent){
mCallbacks.onResultOK(requestCode, resultCode);
}
在您的父活动中,在回调切换片段
上@Override
public void onResultOK(int request, int result){
//check for result and requestcode
Fragment fragment = new YourFragment();
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.YourContainer, fragment).commit();
}