मैं एंड्रॉइड के लिए शुरुआत कर रहा हूं और मैं छोटे एंड्रॉइड एप्लिकेशन का विकास कर रहा हूं। मेरे आवेदन में मैं शेरलॉक लाइब्रेरी का उपयोग कर रहा हूं। मेरे आवेदन में एक मुख्य गतिविधि और दो टुकड़े हैं। मेरी सूची में टुकड़ा संरचना के पर लग रहा हैonCreateOptionsMenu पर पहले कहा जाता है क्रिएट एंड्रॉइड
public class MyCards extends SherlockListFragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside fragment on create");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on activity created");
}
private void displayCards(int type) {
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside display cards");
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mycards, container, false);
View view1 = inflater.inflate(R.layout.empty_card, container, false);
return view;
}
/*@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
optionsMenu = menu;
}*/
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_type2, menu);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on create option menu");
Spinner spinner = (Spinner) menu.findItem(R.id.cardType)
.getActionView();
SpinnerAdapter adapter = ArrayAdapter.createFromResource(getSherlockActivity().getSupportActionBar().getThemedContext(), R.array.card_action_list,android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); // set the adapter
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
displayCards(pos);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on option selected");
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
displayCards(0);
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside on no option selection");
}
});
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.i("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", "inside option select listener");
}
}
अब की तरह मेरी समस्या यह है कि जब मैं पहली बार के लिए एक और टुकड़ा करने के लिए इधर-उधर एक टुकड़ा स्विच यह निम्नलिखित लॉग उत्पादन
01-04 00:54:06.997: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside on create option menu
01-04 00:54:06.997: W/KeyCharacterMap(2575): No keyboard for id -1
01-04 00:54:06.997: W/KeyCharacterMap(2575): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
01-04 00:54:07.020: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside fragment on create
01-04 00:54:07.036: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(2575): inside on activity created
कि विकल्प बनाने पर मतलब देता है ऑनफैगमेंट बनाने और गतिविधि बनाने पर पहले कहा जाता है। और यह दो चेतावनी भी दे रहा है। यह किसी भी त्रुटि के साथ काम करते हैं। लेकिन मैं इसे लॉग उत्पादन
02-07 10:05:10.983: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on create option menu
02-07 10:05:11.023: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside fragment on create
02-07 10:05:11.043: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on activity created
02-07 10:05:11.113: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside display cards
02-07 10:05:11.133: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(15844): inside on option selected
इस बार यह किसी भी चेतावनी दे नहीं कर रहा है और ठीक से काम कर निम्नलिखित देता है अब मेरी सूची दृश्य
प्रदर्शित करने के लिए जब मैं फिर से (दूसरी बार) एक ही टुकड़ा करने के लिए स्विच कर पा रहा हूँ। मेरी सूची दृश्य भी प्रदर्शित करना। लेकिन पहली बार यह ठीक से काम नहीं कर रहा है .. एक और मुद्दा यह है कि जब मैंने इसे एंड्रॉइड के उच्च संस्करण पर चलाया तो यह ठीक काम कर रहा था। लेकिन अगर मैं 2.3.3 की तरह एंड्रॉइड के निचले संस्करण पर चला गया तो मैं इस तरह के व्यवहार दिखाता हूं .. मैंने इस ListFragment onPrepareOptionsMenu called before onCreate. Why and How to Fix/Bypass? के बारे में पढ़ा लेकिन मैं इस समस्या को हल करने में सक्षम नहीं हूं।
अगर मैं परिभाषित setHasOptionsMenu(true)
onActivityCreated
अंदर यह उत्पादन
01-04 03:32:38.622: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside fragment on create
01-04 03:32:38.653: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside on activity created
01-04 03:32:38.692: I/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(8157): inside on create option menu
01-04 03:32:38.700: W/KeyCharacterMap(8157): No keyboard for id -1
01-04 03:32:38.700: W/KeyCharacterMap(8157): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
मैं अपने टुकड़ा जहां वास्तविक टुकड़ा लेन-देन से नीचे की तरह जगह लेता है के लिए setHasOptionsMenu सेट करने की कोशिश की निम्नलिखित देता है ..
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
MyCards mc = new MyCards();
mc.setHasOptionsMenu(true);
ft = mActivity.getSupportFragmentManager().beginTransaction();
mFragment = Fragment.instantiate(mActivity, mClass.getName(),
mArgs);
ft.add(android.R.id.content, mFragment, mTag);
ft.commit();
}
और अभी भी यह एक ही समस्या दे रहा है।
मेरे कोड या कुछ और चीज़ के साथ कोई समस्या? तो इस समस्या को हल करने के लिए कैसे करें। की आवश्यकता है ... धन्यवाद ...
क्या आप वाकई ऐसा नहीं कर रहे हैं क्योंकि आप क्रेट में लॉगिंग करने से पहले 'setHasOptionsMenu' को कॉल कर रहे हैं? – Zharf
हाय zharf उत्तर के लिए धन्यवाद। मेरा संपादित प्रश्न देखें .. और लॉग आउटपुट बदल दिया .. लेकिन यह मेरी समस्या को हल नहीं कर रहा है .. – nilkash