当前位置: 首页 > 面试题库 >

具有两个功能的Android按钮

游勇军
2023-03-14
问题内容

我需要一个假定具有两个功能的按钮。

如果我点击一次,它将转到下一页。如果我按住按钮,它将允许我编辑按钮上的文本。

单击该按钮可以转到下一页,但是如果我按住该按钮,该如何实现允许我更改文本的第二个功能?

有人知道吗

Java代码

public class MainActivity extends Activity {
    Button button1;
    Button button2;
    Button button3;
    Handler h;
    private Socket socket;
    private boolean mInSettingsMode;
    private static final int SERVERPORT = 5000;
    private static final String SERVER_IP = "192.168.43.83";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(new ClientThread()).start();
        // living button click start
        button1 = (Button) findViewById(R.id.btnliving);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                h = new Handler();
                h.postDelayed(irun, 0);
            }
        });

        button2 = (Button) findViewById(R.id.btnbed);
        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                h = new Handler();
                h.postDelayed(irun2, 0);
            }
        });

        button3 = (Button) findViewById(R.id.btndin);
        button3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                h = new Handler();
                h.postDelayed(irun3, 0);
            }
        });
    }

    Runnable irun = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, living.class);
            startActivity(i);
            finish();
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        }
    };

    Runnable irun2 = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, bed.class);
            startActivity(i);
            finish();
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        }
    };

    Runnable irun3 = new Runnable() {
        @Override
        public void run() {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, din.class);
            startActivity(i);
            finish();
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
        }
    };

    /*
     * @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the
     * menu; this adds items to the action bar if it is present.
     * getMenuInflater().inflate(R.menu.main, menu); return true; }
     */
    class ClientThread implements Runnable {
        @Override
        public void run() {
            try {
                InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
                // new Thread(new ClientThread()).start();
                socket = new Socket(serverAddr, SERVERPORT);
            } catch (UnknownHostException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}

xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_gravity="center"
 android:gravity="center"
 android:orientation="vertical"
 android:background="@drawable/back1"
 tools:context=".MainActivity" >
 <Button 
 android:id="@+id/btnliving"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Light Control"
 />
 <Button 
 android:id="@+id/btnbed"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Fan Control"
 />
 <Button 
 android:id="@+id/btndin"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Thermostat Control"
 />

 </LinearLayout>

问题答案:

您可以将第二个函数设置为setOnLongClickListener:

button.setOnLongClickListener(new OnLongClickListener() { 
        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            //change text here
            return true;
        }
    });

第一个函数是与setOnclickListener相同的:

button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });

检查此文档



 类似资料:
  • 问题内容: 我需要一个假定具有两个功能的按钮。 如果我点击一次,它将转到下一页。如果我按住按钮,它将允许我编辑按钮上的文本。 单击该按钮可以转到下一页,但是如果我按住该按钮,该如何实现允许我更改文本的第二个功能? 有人知道吗 Java代码 xml代码 问题答案: 您可以将第二个函数设置为setOnLongClickListener: 第一个函数是与setOnclickListener相同的: 检查

  • 我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!

  • 我在创建Azure函数时注意到,一个函数App可以有多个函数。 有人能给我解释一下这背后的原理吗? 我的猜测 - 由于函数应用决定了托管(应用服务计划或消耗计划),因此你可以在应用服务计划上有一个函数应用,然后在该函数应用内有多个函数共享同一应用服务计划。 但这在消费计划中没有意义,因为如果你有一个具有“消费”计划的功能应用程序,其中包含2个功能,这与将两个功能拆分为具有消费计划的2个功能应用程序

  • 我有一个网络表单,我想提交一个PayPal按钮点击。 我能让其中一个工作,但不是两个都能。因此,贝宝按钮是提交表单,然后加载付款页面。此代码仅提交表单,不加载付款页面。 此代码仅加载付款页面: 我错过了什么?我需要第三个按钮来处理其他两个按钮吗?

  • 我正在使用iSpeech的API用于TTS,在他们的示例android项目中,他们有两个带有两个OnClickListener的按钮,一个用于开始演讲,一个用于停止演讲。我想把它保持在一个按钮上,以便在android屏幕上有更多的空间,这样,如果语音停止,按下按钮就会开始,如果语音开始,按下按钮就会停止。 有很多类似的问题,答案表明最好保持一个监听器一个按钮,但我不太满意,因为这个问题是在多个监听

  • 问题内容: 我正在使用基于SDK演示示例中EfficientAdapter示例的BaseAdapter扩展版本。 我的数据基本上是一个对象(),其中包含一个,其中包含实际的地点列表,可通过访问。此ArrayList数据按范围排序,由一些特殊项目(分隔符)组成,没有数据,但标志设置为。 现在,每当我得到一个作为分隔符的数据对象时,它都会返回并根据当前数据对象是由真实数据组成还是仅仅是分隔符虚拟物来使