【问题标题】:I am unable to set Onclick event on Imageview in android我无法在 Android 的 Imageview 上设置 Onclick 事件
【发布时间】:2012-06-29 02:36:07
【问题描述】:

无论我在哪里单击 ImageView,onclick 方法都不会发生。我的意思是它没有重定向到我的 main.xml

//包名:bunk

//我的cesem.XML:

//只是一个Textview和一个Image View - 缩进四个空格。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="25dp"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Select Your Semester"
        android:textSize="25dp" 
        android:gravity="center"
        android:id="@+id/tvSemCe"
        android:layout_marginBottom="20dp"
   />

<ImageView
    android:id="@+id/back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/back"
     />

</LinearLayout>




//Class file: Cesem.java


package com.bunk;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class Cesem extends Activity implements OnClickListener{


    ImageView back;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cesem); // cesem.xml

        back=(ImageView) findViewById(R.id.back);// back is ImageView
        back.setOnClickListener(this);



    }
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (v == back) {
            setContentView(R.layout.main);
    }


    }
}

【问题讨论】:

    标签: android android-intent android-button


    【解决方案1】:
    if (v.getId() == R.id.back)
    

    而不是

    if (v == back)
    

    【讨论】:

      【解决方案2】:

      尝试将元素设置为可点击:

      back.setClickable(true);
      

      或者可能因为点击回调(setContentView..)的内容而看不到反馈

      尝试在点击回调中记录一些东西,例如

       public void onClick(View v) {
          // TODO Auto-generated method stub
      
          if (v == back) {
              Toast.makeText(this, "Click", Toast.LENGTH_SHORT).show();
              setContentView(R.layout.main);
          }
       }
      

      【讨论】:

      【解决方案3】:

      将代码更改为:

      public class Cesem extends Activity implements OnClickListener{
      
          ImageView back;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              // TODO Auto-generated method stub
              super.onCreate(savedInstanceState);
              setContentView(R.layout.cesem); // cesem.xml
      
              back=(ImageView) findViewById(R.id.back);// back is ImageView
              back.setOnClickListener(this);
          }
          public void onClick(View v) {
              // TODO Auto-generated method stub
      
              if (v.getId() == R.id.back) {
                 Toast.makeText(getApplicationContext(), "Toast 1",Toast.LENGTH_SHORT).show();
                  Activity.this.setContentView(R.layout.main);
                  }
                  else
                  {
                    Toast.makeText(getApplicationContext(), "Toast 2",Toast.LENGTH_SHORT).show();
                  }
          }
         }
      }
      

      并在清单中将您的活动注册为:

       <activity
                  android:name=".Cesem" />
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 2018-03-16
      相关资源
      最近更新 更多