【问题标题】:[Android]I want to make many buttons with ONE OnClick method[Android]我想用 ONE OnClick 方法做很多按钮
【发布时间】:2015-09-14 10:11:22
【问题描述】:

每个人。

我正在尝试为我的 android 项目编写 java 代码。

我做了一个额外的活动。它的背景是半透明的,上面有几个按钮。除了只有一个按钮用于退出之外,每个按钮都应该执行类似的功能。

也就是说,

  1. 按钮为 10。

  2. 1~9号按钮功能相同。该功能是收集一个字符串,预先分配给每个按钮(例如按钮1 =“你明天应该结婚,否则会被枪杀!”按钮2 =“什么?该死的!”)并在消息堆栈上检索消息(我把它放在别处)。所以,如果我按下按钮 1,我的应用程序会收集消息“你明天应该结婚,否则会被枪杀!”并将其放在消息堆栈上。然后我按下按钮 2,所以我的应用程序会收集消息“什么?该死的!”并将消息放在消息 1 上。依此类推。所以,每个按钮的功能都是一样的。

  3. 这里只有一个特殊按钮:exit()。当我按下它时,活动调用完成(),我可以返回到主要活动。

    所以,我写了如下代码:

    public class PADactivity extends Activity implements View.OnClickListener {
    
        ScrollView BtnPadScrl;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.virtualpad_activity);
            BtnPadScrl = (ScrollView) findViewById(R.id.BtnPadScrl);
            BtnPadScrl.setVerticalScrollBarEnabled(true);
            BtnPadScrl.setScrollBarDefaultDelayBeforeFade(1500);
    
          }
    
      // Warning Message Buttons. 1~9.
      Button btnwrn01 = (Button)findViewById(R.id.wrnbtn01);
      btnwrn01.setOnClickListener(this);
      Button btnwrn02 = (Button)findViewById(R.id.wrnbtn02);
      btnwrn02.setOnClickListener(this);
      Button btnwrn03 = (Button)findViewById(R.id.wrnbtn03);
      btnwrn03.setOnClickListener(this);
      ...
      Button btnwrn09 = (Button)findViewById(R.id.wrnbtn09);
      btnwrn09.setOnClickListener(this);
      // Activity Killer. 1.
      Button killpadnow = (Button)findViewById(R.id.QuitPad);
      killpadnow.setOnClickListener(this);
    
      @Override
      public void onClick (View v) {
          if (v.getId() == R.id.QuitPad) {
              Toast.makeText(getApplicationContext(), "Closing Virtual Pad!", Toast.LENGTH_LONG).show();
              finish();
          }
          else if (v.getId() != R.id.QuitPad) {
              Toast.makeText(getApplicationContext(), "Still It is a dummy!", Toast.LENGTH_LONG).show();
    
          }
    
     }
    

如上,我写了代码,当我调用activity时,应用程序立即崩溃了。 请帮我。我会很感激你的建议。

【问题讨论】:

  • 你的日志猫是什么
  • 太长了..我只能提取一部分。
  • 09-15 10:15:15.722 3208-3212/? D/dalvikvm:GC_CONCURRENT 释放 2052K,39% 释放 5760K/9372K,暂停 2ms+1ms,总共 14ms 09-15 10:15:20.152 29439-29439/? V/TaskCloserActivity﹕TaskCloserActivity resetList mRunningItems.clear 09-15 10:15:20.152 29439-29439/? V/TaskCloserActivity﹕TaskCloserActivity resetList runningAppsCount : 0 09-15 10:15:20.152 29439-29439/? D/ProgramMonitor:活动应用程序计数 = 0

标签: android button android-activity view


【解决方案1】:

在您的 virtualpad_activity 布局中,请为每个按钮添加以下内容

  android:onCLick="onClick"

删除 onClick 方法的 @override 表示法,并删除每个按钮的 button.setOnClickListener。

【讨论】:

  • 谢谢你的建议,但是没有办法只用一个类/方法来测量许多按钮吗?
  • 就是这样!! “onClick”是单击该按钮时调用的方法名称。因此,如果您希望 10 个按钮使用相同的方法,您只需在所有 10 个按钮标签中提及 android:onClick="onClick"
  • ?!!!!哇!我只是误会了,但现在我知道你在说什么了。我以前很少这样想。我马上修改我的代码。谢谢!!! :-)
  • 如果您觉得有用,请给答案投票。对其他人也有帮助!
【解决方案2】:

不要写 if 和 elseif,试试 if 和 else:

public void onClick (View v) {
      if (v.getId() == R.id.QuitPad) {
          Toast.makeText(getApplicationContext(), "Closing Virtual Pad!", Toast.LENGTH_LONG).show();
          finish();
      }
      else  {
          Toast.makeText(getApplicationContext(), "Still It is a dummy!", Toast.LENGTH_LONG).show();

      }

 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-07
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多