मुझे वर्तमान में डायलॉगफ्रैगमेंट्स के साथ कुछ समस्याएं आ रही हैं। मैं नवीनतम v.4 समर्थन संकुल का उपयोग कर रहा हूं (संशोधन 8 मुझे विश्वास है) मेरी समस्या यह है कि यदि संवाद खुला रहता है तो मेरे फोन का अभिविन्यास बदलता है, तो एप्लिकेशन अभिनय को शुरू करता है।डायलॉगफ्रैगमेंट ओरिएंटेशन चेंज क्रैश एट एक्टिविटी()
वर्तमान में मेरा आवेदन इस तरह काम करता है: एक फ्रैगमेंट एक्टिविटी है, यह एक टुकड़ा कहता है। यह टुकड़ा फिर एक DialogFragment (getActivity() के माध्यम से कहता है। GetSupportFragmentManager()।
तो उन्मुखीकरण परिवर्तन करते हुए संवाद खुला है, getActivity() टुकड़ा = अशक्त में। यह एक समस्या का कारण बनता है अगर मैं चाहता हूँ गतिविधि आदि
आप संवाद खोलने के इस पैदा करने के लिए समाप्त करने, अभिविन्यास एक बटन बदल सकते हैं और प्रेस के बाद ही आप बटन दबाएँ यह दुर्घटनाओं
मेरे DialogFragment AlertDialogFragment कहा जाता है:।
public class AlertDialogFragment extends DialogFragment {
private static Builder mBuilder;
private static DialogInterface.OnClickListener mListener;
public static AlertDialogFragment newInstance(Context context, DialogInterface.OnClickListener listener) {
mBuilder = new AlertDialog.Builder(context);
mListener = listener;
return new AlertDialogFragment();
}
//... some functions to set Icons etc
public void setButton(int whichButton, CharSequence buttonText) {
final DialogInterface.OnClickListener listener = mListener == null ? null : mListener;
mBuilder.setPositiveButton(buttonText, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
listener.onClick(dialog, whichButton);
}
});
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return mBuilder.create();
}
}
public class TestBedFragment extends Fragment implements DialogInterface.OnClickListener {
// onCreateView Stuff
private void showCrashDialog() {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
AlertDialogFragment newDialog = AlertDialogFragment.newInstance(getActivity(), this);
newDialog.setTitle("Test");
newDialog.setIcon(android.R.drawable.ic_dialog_alert);
newDialog.setMessage("Testing testing testing... 1, 2, 3... Just press Ok.");
newDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok");
newDialog.show(ft, "dialog");
// Cause the problem. Simulate the user turning the screen
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
@Override
public void onClick(DialogInterface dialog, int which) {
/*
* hexnumber = a hex number
* Normally equals: TestBedFragment{hexnumber #0 id=hexnumber}
* With crash equals: TestBedFragment{hexnumber}
*/
Log.e("TestBedFragment", "this = " + this);
/*
* hexnumber = a hex number
* Normally equals: [email protected]
* With crash equals: null
*/
Log.e("TestBedFragment", "getActivity() = " + getActivity()); // Will equal null... ???
getActivity().finish();
}
}
मैं इस के कारण क्या भी यकीन नहीं है:
यह टुकड़ा है? क्षमा करें अगर यह एक बेवकूफ सवाल है। मैंने 'विंडोज लीकिंग' के बारे में अन्य स्थानों में पढ़ा है, फिर भी मैंने लॉगकट में उस सामान का कोई उल्लेख नहीं देखा है।
किसी को भी मेरी मदद कर सकते :) इसकी बहुत सराहना
धन्यवाद