2011-10-06 51 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.