【问题标题】:click on a button, a popup menu will start, and then I click on a popup menu item then selected item will show on buttontext in android studio单击一个按钮,将启动一个弹出菜单,然后单击一个弹出菜单项,然后所选项目将显示在android studio中的buttontext上
【发布时间】:2019-11-17 14:56:47
【问题描述】:

我想单击一个按钮,然后会启动一个弹出菜单,然后我 单击弹出菜单项,然后弹出菜单项将显示在 按钮作为按钮文本。假设有一个按钮并且按钮文本是“YourEmail”。然后我点击按钮,会弹出一个菜单,当我点击一个弹出菜单项时,这个项目会在按钮上显示为按钮文本。

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.application.popupproject.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="showPopup"
        android:text="show popup"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

MainActivity.java,这里我想将按钮中的项目菜单显示为按钮文本:

package com.example.application.popupproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showPopup(View v) {
        PopupMenu popup = new PopupMenu(this, v);
        popup.setOnMenuItemClickListener(this);
        popup.inflate(R.menu.popup_menu);
        popup.show();
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Toast.makeText(this, "Item 1 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2:
                Toast.makeText(this, "Item 2 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3:
                Toast.makeText(this, "Item 3 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item4:
                Toast.makeText(this, "Item 4 clicked", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return false;
        }
    }
}

【问题讨论】:

    标签: java android android-button onitemclicklistener popupmenu


    【解决方案1】:

    首先添加一个按钮id,然后创建一个按钮对象并将其链接到activity_main.xml中的按钮。

    activity_main.xml

     <?xml version="1.0" encoding="utf-8"?>
     <android.support.constraint.ConstraintLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent" tools:context="com.example.application.popupproject.MainActivity">
    
       <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button1":
        android:onClick="showPopup"
        android:text="show popup"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
       </android.support.constraint.ConstraintLayout>
    

    MainActivity.java

      package com.example.application.popupproject;
    
      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      import android.support.v7.widget.PopupMenu;
      import android.view.MenuItem;
      import android.view.View;
      import android.widget.Toast;
    
      public class MainActivity extends AppCompatActivity implements 
      PopupMenu.OnMenuItemClickListener {
          Button button;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          button = (Button) findViewById(R.id.button1);
          }
    
         public void showPopup(View v) {
         PopupMenu popup = new PopupMenu(this, v);
         popup.setOnMenuItemClickListener(this);
         popup.inflate(R.menu.popup_menu);
         popup.show();
         }
    
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                 case R.id.item1:
                         Toast.makeText(this, "Item 1 clicked", 
                                         Toast.LENGTH_SHORT).show();
                         button.setText("item 1");
                         return true;
                  case R.id.item2:
                          Toast.makeText(this, "Item 2 clicked", 
                                          Toast.LENGTH_SHORT).show();
                           button.setText("item2");
                         return true;
                 case R.id.item3:
                         Toast.makeText(this, "Item 3 clicked", 
                                         Toast.LENGTH_SHORT).show();
                          button.setText("item3");
                           return true;
                 case R.id.item4:
                         Toast.makeText(this, "Item 4 clicked", 
                                     Toast.LENGTH_SHORT).show();
                          button.setText("item4")
                         return true;
                  default:
                        return false;
             }
          }
       }
    

    【讨论】:

    • 感谢您的支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    相关资源
    最近更新 更多