【问题标题】:On Android emulator my button is not clicking在 Android 模拟器上,我的按钮没有点击
【发布时间】:2014-03-16 09:01:44
【问题描述】:

我最近开始编程并面临这个问题。我的按钮没有在模拟器中单击,但是,我在 java 中编写了 onClickListener。它仍然不起作用。

这是我的 xml 代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<Button
android:id="@+id/btn1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SD"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="70dp"
android:background="@color/blue_gray"
android:visibility="visible"
android:onClick="onClick"/>
<Button
    android:id="@+id/btn2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/SD2"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="70dp"
    android:background="@color/follow"
    android:visibility="gone"
    android:onClick="onClick"/>
</FrameLayout>

这是我的java代码:

enter code here 包com;

           import android.app.Activity;
           import android.os.Bundle;
           import android.view.View;
           import android.widget.Button;
           import android.widget.ListView;
           import android.widget.TextView;
           import com.example.app.R;

           /**
           * Created by ww on 12.02.14.
           */



           public class fragment_main extends Activity  {

           Button i1;
           Button i2;


            protected void onCreate (Bundle SavedInstanceState){
            super.onCreate(SavedInstanceState);
            setContentView(R.layout.fragment_main);

             i1= (Button) findViewById(R.id.btn1);
             i2=(Button) findViewById(R.id.btn2);



             }




             public void onClick(View view) {
             switch (view.getId()) {
             case R.id.btn1:
             i1.setVisibility(View.GONE);
             i2.setVisibility(View.VISIBLE);
             break;
             case R.id.btn2:
             i1.setVisibility(View.VISIBLE);
             i2.setVisibility(View.GONE);

             break;
              }
              }
              }

【问题讨论】:

    标签: java android android-layout button android-framelayout


    【解决方案1】:

    这是工作代码,

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    
    <Button
    android:id="@+id/btn1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/sd"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="70dp"
    android:onClick="onClick"/>
    
    <Button
    android:id="@+id/btn2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/sd2"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_marginTop="140dp"
    android:visibility="gone"
    android:onClick="onClick"/>    
    
    </RelativeLayout>
    

    MainActivity.java

    package com.example.test;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends Activity  {
    
        Button b1;
        Button b2; 
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
             b1 = (Button) findViewById(R.id.btn1);
             b2 = (Button) findViewById(R.id.btn2);
        }
    
    
        public void onClick(View v) {
            switch(v.getId()) {
                case R.id.btn1:
                    b2.setVisibility(View.VISIBLE);
                    b1.setVisibility(View.INVISIBLE);
               break;
                case R.id.btn2:
                    b2.setVisibility(View.INVISIBLE);
                    b1.setVisibility(View.VISIBLE);
               break;
    
            }
         }
      }
    


    输出(在模拟器中编译并运行):

    • 当应用程序启动时,Button2 将不可见,因为它在 xml layout 中设置为不可见。



      • 一旦用户点击上方的button1button2 将可见,button1 将不可见。



    【讨论】:

      【解决方案2】:

      你必须为你的按钮注册一个监听器,例如:

      i1 = (Button) findViewById(R.id.btn1);
      i2 = (Button) findViewById(R.id.btn2);
      //inside onCreate do this:
      i1.setOnClickListener(myhandler1);
      i2.setOnClickListener(myhandler2);
      

      然后你必须创建那些监听器。

      // somewhere outside onCreate do this:
      View.OnClickListener myhandler1 = new View.OnClickListener() {
      public void onClick(View v) {
        // it was the 1st button
      }
      };
      View.OnClickListener myhandler2 = new View.OnClickListener() {
      public void onClick(View v) {
        // it was the 2nd button
      }
      };
      

      【讨论】:

      • 我认为他想使用 android:onClick XML 属性以避免这样做。
      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2012-12-16
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      相关资源
      最近更新 更多