2011-04-28 64 views
1

請指導我,我怎麼能叫上其他活動菜單從其他活動調用菜單

喜歡這裏的主要活動

package com.droidnova.android.howto.optionmenu; 



import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.widget.Toast; 

public class ControlMenu extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.settings:  
       Intent intent = new Intent(this, ShowSettings.class); 
        startActivity(intent); 
      break; 
      case R.id.services:  Toast.makeText(this, "You pressed the text!", Toast.LENGTH_LONG).show(); 
           break; 
      case R.id.Quit: 

       new Thread(new Runnable() { 
        public void run() {       
         ControlMenu.this.finish(); 

         // The following makes the Android Gods frown upon me 
         android.os.Process.killProcess(android.os.Process.myPid()); 
         System.exit(0); 
        } 
       }).start(); 
       break; 
      default:  
      break; 
     } 
     return true; 
    } 
} 

現在我有做的另一項活動中,我需要證明在此

package com.droidnova.android.howto.optionmenu; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class ShowSettings extends Activity { 

    Prefs myprefs = null; 

    final String tag = "CH12:ShowSettings"; 

    AlertDialog.Builder adb;// = new AlertDialog.Builder(this); 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 

     setContentView(R.layout.showsettings); 

     this.myprefs = new Prefs(getApplicationContext()); 

     // load screen 
     PopulateScreen(); 

     this.adb = new AlertDialog.Builder(this); 

     final Button savebutton = (Button) findViewById(R.id.settingssave); 

     // create anonymous click listener to handle the "save" 
     savebutton.setOnClickListener(new Button.OnClickListener() { 

      public void onClick(View v) { 
       try { 

        // get the string and do something with it. 

        final EditText email = (EditText) findViewById(R.id.emailaddress); 
        if (email.getText().length() == 0) { 

         AlertDialog ad = ShowSettings.this.adb.create(); 
         ad.setMessage("Please Enter Your Email Address"); 
         ad.show(); 
         return; 
        } 

        final EditText serverurl = (EditText) findViewById(R.id.serverurl); 
        if (serverurl.getText().length() == 0) { 
         AlertDialog ad = ShowSettings.this.adb.create(); 
         ad.setMessage("Please Enter The Server URL"); 
         ad.show(); 
         return; 
        } 

        // save off values 
        ShowSettings.this.myprefs.setEmail(email.getText().toString()); 
        ShowSettings.this.myprefs.setServer(serverurl.getText().toString()); 
        ShowSettings.this.myprefs.save(); 

        // we're done! 
        finish(); 
       } catch (Exception e) { 
        Log.i(ShowSettings.this.tag, "Failed to Save Settings [" + e.getMessage() + "]"); 
       } 
      } 
     }); 
    } 

    private void PopulateScreen() { 
     try { 
      final EditText emailfield = (EditText) findViewById(R.id.emailaddress); 
      final EditText serverurlfield = (EditText) findViewById(R.id.serverurl); 

      emailfield.setText(this.myprefs.getEmail()); 
      serverurlfield.setText(this.myprefs.getServer()); 
     } catch (Exception e) { 

     } 
    } 
} 

我應該在上面的代碼寫同樣的菜單,所以我的菜單也可以出現在這裏。

回答

3

創建菜單作爲一個XML資源,那麼你可以從任何地方訪問它。檢查documentation。如果您只需要將某個活動的某些數據傳遞給另一個活動,那麼擴展Application看起來太多了,因爲您可以在Intent中傳遞信息。除此之外,在這種情況下還有「危險」(因爲活動lyfecicle),因此您應該在這種情況下使用SharedPreferences(而不是創建Application全局變量)。