2011-10-06 50 views
0

我有一個Android類的項目,所以我還在學習,這應該是一個基本問題。我們得到了一個小費計算器,並已做了一些修改,現在我們必須添加一個菜單。隱藏和顯示單個菜單按鈕

啓動時,它將處於多人模式。給出一個文本框和文本字段,表示您希望賬單分成多少人。當你點擊菜單時,它應該顯示一個單人模式,它消除了文本框和文本字段。然後菜單將變爲在菜單中顯示多人模式按鈕。

我已經有一切工作,除了它顯示兩個按鈕,我無法弄清楚如何暫時隱藏按鈕。主要錯誤是:

不能在基本類型int

的聲明援引setVisibility(INT):

multiple_button.setVisibility(View.GONE);

我試過隱藏按鈕的每個組合,我可以想到,並認爲上述行是正確的,但不確定如何使其工作。

one_person_button = View.VISIBLE; 
    multiple_button = View.GONE; 

我在代碼中有這個,但它也沒有做任何事。

任何幫助將不勝感激。

編輯:代碼。我已經通過鏈接閱讀,但考慮到我沒有OnPrepareOptions部分,我需要重新閱讀

package com.android; 


import android.app.Activity; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.widget.RadioButton; 
import android.widget.TextView; 
import android.widget.Button; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 

public class tipcalc extends Activity 
{ 

    public static int one_person_button = Menu.FIRST; 
    private int multiple_button = Menu.FIRST +1; 
    static final private int reset_button = Menu.FIRST +2; 
    private static final int MENU_ITEM = 0; 

    private EditText txtbillamount; 
    private EditText txtpeople; 
    private EditText txtpercentage; 

    private TextView txtperperson; 
    private TextView txttipamount; 
    private TextView txttotal; 

    private Button btncalculate; 
    private Button btnreset; 

    private double billamount = 0; 
    private double percentage = 0; 
    private double numofpeople=0; 
    private double tipamount = 0; 
    private double totaltopay = 0; 
    private double perperson = 0; 
    private View view; 


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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 

     MenuItem itemOne = menu.add(0, one_person_button, Menu.NONE, 
       R.string.one_person); 
     MenuItem itemMultiple = menu.add(1, multiple_button, Menu.NONE, 
       R.string.multiple); 



     MenuItem itemReset = menu.add(2, reset_button, Menu.NONE, 
            R.string.reset); 

     itemOne.setIcon(R.drawable.ic_menu_invite); 
     itemMultiple.setIcon(R.drawable.ic_menu_allfriends); 
     itemReset.setIcon(R.drawable.ic_menu_refresh); 

     one_person_button.setGroupVisible(0, true); 
     multiple_button.setVisibility(View.GONE); 
     one_person_button = View.VISIBLE; 
     multiple_button = View.GONE; 

     return true; 
    } 


    public boolean onOptionsItemSelected(MenuItem item) { 
     super.onOptionsItemSelected(item); 
     if (one_person_button == View.VISIBLE) { 
      ((TextView)findViewById(R.id.txtpeople)).setVisibility(View.INVISIBLE) ; 
      ((TextView)findViewById(R.id.widget30)).setVisibility(View.INVISIBLE) ; 
      multiple_button = View.VISIBLE; 
      one_person_button = View.GONE; 
      numofpeople = 1; } 
     else if (multiple_button == View.VISIBLE) { 
      ((TextView)findViewById(R.id.txtpeople)).setVisibility(View.VISIBLE) ; 
      ((TextView)findViewById(R.id.widget30)).setVisibility(View.VISIBLE) ; 
      multiple_button = View.GONE; 
      one_person_button = View.VISIBLE; 
     } 
     return false; 
    } 

    private void initControls() 
    { 
     txtbillamount = (EditText)findViewById(R.id.txtbillamount); 
     txtpeople = (EditText)findViewById(R.id.txtpeople); 
     txtperperson=(TextView)findViewById(R.id.txtperperson); 
     txttipamount=(TextView)findViewById(R.id.txttipamount); 
     txttotal=(TextView)findViewById(R.id.txttotal); 

     btncalculate = (Button)findViewById(R.id.btncalculate); 
     btnreset = (Button)findViewById(R.id.btnreset); 

     btncalculate.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ calculate(); }}); 
     btnreset.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ reset(); }}); 

    } 

    private void calculate() 
    { 
    billamount=Double.parseDouble(txtbillamount.getText().toString()); 
    numofpeople=Double.parseDouble(txtpeople.getText().toString());  



     RadioButton poorButton = (RadioButton) findViewById(R.id.radioButton1); 
     RadioButton goodButton = (RadioButton) findViewById(R.id.radioButton2); 
     RadioButton excellentButton = (RadioButton) findViewById(R.id.radioButton3); 

    if (poorButton.isChecked()){ 
     percentage = Double.parseDouble(poorButton.getText().toString()); 
    } else if (goodButton.isChecked()){ 
     percentage = Double.parseDouble(goodButton.getText().toString()); 
    } else if (excellentButton.isChecked()){ 
     percentage = Double.parseDouble(excellentButton.getText().toString()); 
    } 




    tipamount=(billamount*percentage)/100; 
    totaltopay=billamount+tipamount; 
    perperson=totaltopay/numofpeople; 

    txttipamount.setText(Double.toString(tipamount)); 
    txttotal.setText(Double.toString(totaltopay)); 
    txtperperson.setText(Double.toString(perperson));   
    } 

    private void reset() 
    { 
    txtbillamount.setText(""); 
    txtpeople.setText(""); 

    txtperperson.setText(""); 
    txttipamount.setText(""); 
    txttotal.setText(""); 
    } 
} 

回答

-1

嘗試調用setVisibility 8

0

後所有的relavent源代碼。如果沒有它,我們不能給你任何錯誤的具體建議。

我可以告訴你,雖然你需要覆蓋onPrepareOptionsMenu(),在那裏你會想要檢查你的模式,並讓正確的按鈕可見。但是你需要調用setVisibility(View.VISIBLE);在對按鈕小部件的引用上,而不是在int上。

This page holds the answer to your questions.