【问题标题】:Why are my buttons not working in Android Studio?为什么我的按钮在 Android Studio 中不起作用?
【发布时间】:2016-04-19 15:23:39
【问题描述】:

我正在做 A Level 计算,我正在尝试为我的 Comp 4 项目制作一个应用程序。我用按钮完成的所有其他类似乎都工作正常,但我的主菜单上的按钮不起作用。

public class MainActivity extends AppCompatActivity {

Button bLogin;
Button bProducts;
EditText etName, etAge, etUsername;

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

@Override
protected void onStart() {
    super.onStart();
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id= item.getItemId();
    switch (id) {
    case R.id.bLogin:
        break;
    case R.id.bProducts:
        break;
    }
    return super.onOptionsItemSelected(item);
}

public void ProductsOnClick(View b) {
    startActivity(new Intent(".Products"));
    switch (b.getId()) {
    case R.id.bProducts:
    }
}

public void LoginOnClick(View a) {
    startActivity(new Intent(".Login"));
    switch (a.getId()){
    case R.id.bLogin:
    }
}

}

这个Activity 运行,但选项菜单上的按钮不起作用。

我正在使用 Android Studio 对此进行编程。

【问题讨论】:

  • Buttons 不同于 MenuItem(菜单按钮)。他们的实现不需要onClick 方法,但应该在onOptionsItemSelected 中处理。
  • 你有什么错误吗?

标签: java android button case void


【解决方案1】:

因为当菜单项被选中时没有什么可以执行,所以改变你的代码:

 @Override
    public boolean onOptionsItemSelected(MenuItem item){
         int id= item.getItemId();
         switch (id) {
             case R.id.bLogin:
               startActivity(new Intent(".Login"));
             break;

             case R.id.bProducts:
               startActivity(new Intent(".Products"));
             break;
         }
         return super.onOptionsItemSelected(item);
}

PS:

确保您使用的是正确的 Intent 构造函数,因为使用 Intent(String) 您需要一个 action 作为参数,而不是活动名称或其他内容。

【讨论】:

    【解决方案2】:

    您可以改用OnClickListener。把它放在你的onCreate:

    bProducts.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(".Products"));
        }
    });
    
    bLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(".Login"));
        }
    });
    

    【讨论】:

    • 我更新了我的按钮,但产品按钮不起作用。除产品按钮外,所有其他按钮均正常工作。如果代码与其他代码相同,我不明白为什么此按钮不起作用。
    • @09Emi 啊,我明白了。您必须将 Button 链接到 id。所以你会添加bProducts = (Button) findViewById(R.id.bProducts)。否则按钮不会链接到 UI。
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多