2013-02-05 34 views
0

我想显示一个变量,用户应该能够使用2个按钮上下数。这是我的代码。问题似乎并不奏效。如果你点击“minues”,那么会出现“1”,如果你点击“plus”则什么都不会发生。非常感谢!Android应用程序:按钮计数变量向上或向下

我知道交换机可能不是最完美的解决方案,但我还是想尝试一下

public class StoryCreator extends Activity implements OnClickListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_story_creator); 

    Button b1 = (Button) findViewById(R.id.minus); 
    b1.setOnClickListener(this); 

    Button b2 = (Button) findViewById(R.id.plus); 
    b2.setOnClickListener(this); 

} 

    public void onClick(View v) { 

     int Zahl = 1;  

     TextView objekt = (TextView) findViewById(R.id.textView1); 
     objekt.setText("0"); 

     // Perform action on click 
      switch(v.getId()) 
      { 

      case 1: 
            Zahl = Zahl-1; 
            break; 
      case 2: 
            Zahl = Zahl+1; 
            break; 
      default:   
            break; 
     } 


      switch(Zahl) { 
      case -1: 
       objekt.setText("-1"); 
       break; 
      case 0: 
       objekt.setText("0"); 
       break; 
      case 1: 
       objekt.setText("1"); 
       break;    
      case 2: 
       objekt.setText("2"); 
       break;  
      case 3: 
       objekt.setText("3"); 
       break;  

      } 
+0

善意的建议是回到一些教程。首先是Java基础知识,然后是Android Hello World。正如Pavel所说,你的代码有很多问题。事实上,很少有这么短的错误代码。对不起,直言不讳,但事实是最好的。 – Simon

回答

2

更改您的开关情况下:

// Perform action on click 
     switch(v.getId()) 
     { 

     case R.id.minus: 
      Zahl = Zahl-1; 
       break; 
     case R.id.plus: 
      Zahl = Zahl+1; 
      break; 
     default:   
      break; 
    } 

使用按钮的ID,而不是1,2根据按钮执行动作点击

+0

好吧,他的代码中存在更多问题。你的解决方案将只修复按钮id问题:)用给出的逻辑,它不会倒计数。 –

+0

@PavelDudka:在我的解决方案中,两个按钮都可以工作,OP将根据应用程序行为改进逻辑。即时通讯权利,或者我会用完整的代码编辑我的答案? –

+1

不要认为有必要编辑答案,因为你指出了他的代码中最重要的问题。其他错误与业务逻辑有关,所以只有OP知道他的应用程序应该做什么:) –

0

您还设置了

int Zahl = 1;  
对每个按钮点击

,并Zahl的价值可能只有0或1

public class StoryCreator extends Activity implements OnClickListener { 


int mValue = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_story_creator); 

    Button b1 = (Button) findViewById(R.id.minus); 
    b1.setOnClickListener(this); 

    Button b2 = (Button) findViewById(R.id.plus); 
    b2.setOnClickListener(this); 

} 

    public void onClick(View v) { 


     TextView objekt = (TextView) findViewById(R.id.textView1); 

     // Perform action on click 
      switch(v.getId()) 
      { 

      case R.id.plus: 
            mValue++; 
            break; 
      case R.id.minus: 
            mValue--; 
            break; 
      default:   
            break; 
     } 

      objekt.setText(mValue); 
} 
+0

很酷,谢谢你指出我的可变逻辑流程! – ChrisHH

0

嗯,有一堆代码中的问题:

  • 你用错误的方式来引用按钮
  • 你没有保存前值正常
  • 你不增加前值正常
  • 等:)

试试这个代码了:

public class StoryCreator extends Activity implements OnClickListener { 

    TextView textView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_story_creator); 

     Button b1 = (Button) findViewById(R.id.minus); 
     b1.setOnClickListener(this); 

     Button b2 = (Button) findViewById(R.id.plus); 
     b2.setOnClickListener(this); 

     textView = (TextView) findViewById(R.id.textView1); 
     textView.setText("0"); //initial value 

    } 

    public void onClick(View v) { 

     int Zahl = Integer.parseInt(textView.getText().toString());  

     // Perform action on click 
      switch(v.getId()) 
      { 

      case R.id.plus: 
            Zahl++; 
            break; 
      case R.id.minus: 
            Zahl--; 
            break; 
      default:   
            break; 
     } 

     textView.setText(String.valueOf(Zahl)); 
    } 
} 
+0

太好了,非常感谢!建议我想我会回到一些初学者教程... :-)这段代码虽然工作,我会继续工作。 – ChrisHH

0

的更清洁的方式做,这是删除“实现View.OnClickListener”,只是为每个按钮的点击监听器。

此外,上述解决方案仍然没有实际增加单个变量。如果你想让你的增量在实例中保持不变,你需要把它变成静态的。

以下内容将为您提供您所需的内容,并且干净利落地完成工作,而不会污染View.OnClickListener的活动。

public class StoryCreator extends Activity { 
    TextView textView; 
    private static int zahl = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_story_creator); 

     Button minus = (Button) findViewById(R.id.minus); 
     minus.setOnClickListener(minusClickListener); 

     Button plus = (Button) findViewById(R.id.plus); 
     plus.setOnClickListener(plusClickListener); 

     textView = (TextView) findViewById(R.id.textView1); 
     textView.setText("0"); //initial value 

    } 

    private View.OnClickListener minusClickListener= new View.OnClickListener() { 
     public void onClick(View v) { 
       zahl--; 
     } 
    } 

    private View.OnClickListener plusClickListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      zahl++; 
     } 
    } 
0

对不起,它有点凌乱,但这应该做你想要的东西。

public class CountUpAction extends AbstractAction { 
     /** Constructor */ 
     public CountUpAction(String name, String shortDesc, Integer mnemonic) { 
     super(name); 
     putValue(SHORT_DESCRIPTION, shortDesc); 
     putValue(MNEMONIC_KEY, KeyEvent.VK_NUMPAD4); 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      addKeyListener(new KeyAdapter() { 
       public void keyPressed(KeyEvent evt) { 
        switch(evt.getKeyCode()) { 
        case KeyEvent.VK_NUMPAD1: 

      //original count 
      count += 1; 
      tfCount.setText(count + ""); 

        } 
       } 
       }); 
     } 
    } 

    public class CountDownAction extends AbstractAction { 
     /** Constructor */ 
     public CountDownAction(String name, String shortDesc, Integer mnemonic) { 
     super(name); 
     putValue(SHORT_DESCRIPTION, shortDesc); 
     putValue(MNEMONIC_KEY, KeyEvent.VK_NUMPAD5); 
     } 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      addKeyListener(new KeyAdapter() { 
      public void keyPressed(KeyEvent evt) { 
       switch(evt.getKeyCode()) { 
       case KeyEvent.VK_NUMPAD2: 

      //original count 
      count -= 1; 
      tfCount.setText(count + ""); 

       } 
      } 
      }); 
     } 
Action countUpAction = new CountUpAction("Count Up", 
      "", new Integer(KeyEvent.VK_ENTER)); 
     Action countDownAction = new CountDownAction("Count Down", 
      "", new Integer(KeyEvent.VK_D)); 


    tfCount = new JTextField("0", 8); 
     tfCount.setHorizontalAlignment(JTextField.CENTER); 
     tfCount.setEditable(false); 
     tfCount.setSize(100, 20); 
     canvas.add(tfCount, BorderLayout.LINE_START); 

    //Invisible 
     JButton btnCountUp = new JButton(); 
     btnCountUp.setFocusable(false); 
     btnCountUp.setHideActionText(true); 
     btnCountUp.setContentAreaFilled(false); 
     btnCountUp.setBorderPainted(false); 
     canvas.add(btnCountUp, BorderLayout.NORTH); 
     //Invisible 
     JButton btnCountDown = new JButton(); 
     btnCountDown.setFocusable(false); 
     btnCountDown.setHideActionText(true); 
     btnCountDown.setContentAreaFilled(false); 
     btnCountDown.setBorderPainted(false); 

     canvas.add(btnCountDown); 
     // Set actions for buttons 
     btnCountUp.setAction(countUpAction); 
     btnCountDown.setAction(countDownAction); 
相关问题