2011-02-04 13 views
9

मैं यह समझने की कोशिश कर रहा हूं कि कई गतिविधियों में कोड के सामान्य टुकड़े कैसे शामिल करें।एक ही संदर्भ मेनू को कई गतिविधियों में जोड़ना

अधिक विशेष रूप से, मेरे पास एक संदर्भ मेनू है जिसे मैं कई गतिविधियों में शामिल करना चाहता हूं। मैंने इसे देखा, लेकिन यह समझ में नहीं आता कि कई गतिविधियों में कैसे विस्तार किया जाए। http://developer.android.com/guide/topics/ui/menus.html

मैं इस अप Menu.java

रूप
public class Menu extends Activity{ 

    // bottom menus 
    public static final int Menu1 = 1; 
    public static final int Menu2 = 2; 
    public static final int Menu3 = 3; 
    public static final int Menu4 = 4; 
    public static final int Menu5 = 5; 
    public static final int Menu6 = 6; 
    public static final int Menu7 = 7; 


    ///Creates the menu items 
    public boolean onCreateOptionsMenu(Menu menu) { 

     menu.add(0, Menu3, 0, "Create Profile").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_add)); 
     menu.add(0, Menu5, 0, "Log In").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_login)); 
     menu.add(0, Menu2, 0, "Settings").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_preferences)); 
     menu.add(0, Menu4, 0, "About").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_help)); 
     menu.add(0, Menu1, 0, "Report A Bug").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_start_conversation)); 
     menu.add(0, Menu6, 0, "New Stuff").setIcon(
       this.getResources().getDrawable(R.drawable.ic_menu_view)); 
     return true; 
    } 



    private MenuItem add(int i, int menu32, int j, String string) { 
     // TODO Auto-generated method stub 
     return null; 
    } 



    // Handles item selections from preference menu 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case Menu1: 
      startActivity(new Intent(this, Bug.class)); 
      return true; 
     case Menu2: 
      startActivity(new Intent(this, EditPreferences.class)); 
      return true; 
     case Menu3: 
      startActivity(new Intent(this, CreateAccount.class)); 
      return true; 
     case Menu4: 
      startActivity(new Intent(this, About.class)); 
      return true; 
     case Menu5: 
      startActivity(new Intent(this, Login.class)); 
      return true; 
     case Menu6: 
      startActivity(new Intent(this, NewAdditions.class)); 
      return true; 
     } 

     return false; 
    } 


} 

उत्तर

23

आप से BaseActivity की तरह 1 सामान्य गतिविधि बना सकते हैं और उस गतिविधि का विस्तार अपनी विरासत में मिली सभी गतिविधियों

उदाहरण मैं checklogin समारोह कहा जाता है में है कि आम कार्यों में शामिल होंगे 1 से अधिक गतिविधि में एक ही कार्यक्षमता जोड़ने के लिए चाहते हैं, आप अपने मेनू कोड यहाँ डाल सकते हैं,

public class BaseActivity extends Activity { 

     @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    settings = getSharedPreferences(PREFS_NAME, 0); 
     if (IsFullScreen) { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } 

     this.CheckLogin(); 
    } 

    // Check login function 
    // Your menu code 

    } 

अब आप इसे अपने गतिविधियों में विस्तार कर सकते हैं

public class MainScreen extends BaseActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    this.setContentView(R.layout.mainscreen); 

    } 

} 
+0

धन्यवाद सब! ये वास्तव में सहायक रहे हैं। मैं ब्रेनासोफ्ट के एक्सएमएल नमूने दोनों का उपयोग कर समाप्त हुआ। फिर मेरे कोड को साफ करने के लिए डीजेके की मुख्य स्क्रीन/बेस गतिविधि नमूना। – user401183

+0

आपका स्वागत है .. मुझे खुशी है कि यह आपके लिए उपयोगी है – djk

+0

मुझे 'AndroidManifest.xml' में बेसएक्टिविटी घोषित करने की आवश्यकता है? या इसकी कोई ज़रूरत नहीं है? –

3

आप एक xml फ़ाइल में एक मेनू परिभाषित कर सकते हैं और फिर onCreateOptionsMenu में मेनू लोड निर्धारित किया है। आपको अभी भी प्रत्येक गतिविधि में प्रत्येक मेनू आइटम को संभालने की आवश्यकता होगी। आप बेसएक्टिविटी क्लास भी बना सकते हैं जो मेनू गतिविधि को संभालने में सक्षम है जो प्रत्येक गतिविधि बढ़ा सकती है।

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/about" android:title="About" 
     android:icon="@drawable/ic_menu_about"/> 
    <item android:id="@+id/search" 
      android:icon="@drawable/ic_menu_search" android:title="Search"></item> 
    <item android:id="@+id/my_location" 
      android:title="My Location" 
      android:icon="@drawable/ic_menu_mylocation"> 
    </item> 
</menu> 


public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.options_menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 
2

कोशिश एक abstract वर्ग

abstract class BaseMenu extends Activity 
    { 
     //Initialize your menus 

     // bottom menus 
public static final int Menu1 = 1; 
public static final int Menu2 = 2; 
public static final int Menu3 = 3; 
public static final int Menu4 = 4; 
public static final int Menu5 = 5; 
public static final int Menu6 = 6; 
public static final int Menu7 = 7; 


///Creates the menu items 
public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add(0, Menu3, 0, "Create Profile").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_add)); 
    menu.add(0, Menu5, 0, "Log In").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_login)); 
    menu.add(0, Menu2, 0, "Settings").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_preferences)); 
    menu.add(0, Menu4, 0, "About").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_help)); 
    menu.add(0, Menu1, 0, "Report A Bug").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_start_conversation)); 
    menu.add(0, Menu6, 0, "New Stuff").setIcon(
      this.getResources().getDrawable(R.drawable.ic_menu_view)); 
    return true; 
} 



private MenuItem add(int i, int menu32, int j, String string) { 
    // TODO Auto-generated method stub 
    return null; 
} 



// Handles item selections from preference menu 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case Menu1: 
     startActivity(new Intent(this, Bug.class)); 
     return true; 
    case Menu2: 
     startActivity(new Intent(this, EditPreferences.class)); 
     return true; 
    case Menu3: 
     startActivity(new Intent(this, CreateAccount.class)); 
     return true; 
    case Menu4: 
     startActivity(new Intent(this, About.class)); 
     return true; 
    case Menu5: 
     startActivity(new Intent(this, Login.class)); 
     return true; 
    case Menu6: 
     startActivity(new Intent(this, NewAdditions.class)); 
     return true; 
    } 

    return false; 
}} 

उपयोग करने के लिए अब Activity

के बजाय वर्ग BaseMenu विस्तार मुझे लगता है यह आपकी सहायता कर सकता है।

संबंधित मुद्दे