Я не могу установить событие Onclick на Imageview в Android

Где бы я ни нажимал на ImageView, метод onclick не выполняется. я имею в виду, что он не перенаправляется на мой main.xml

//имя пакета: койка

//Мой cesem.XML:

//просто текстовое представление и представление изображения - с отступом в четыре пробела.

<?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);
    }


    }
}

person smitlife    schedule 27.06.2012    source источник


Ответы (3)


if (v.getId() == R.id.back)

вместо

if (v == back)
person Geralt_Encore    schedule 27.06.2012

попробуйте установить элемент как кликабельный:

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);
    }
 }
person Stefano Ortisi    schedule 27.06.2012
comment
не работает :( не могли бы вы скачать его и проверить? docs.google.com/file/d/0B8kSGDgP5vndelVZRnJ0YUZ0U0k/ - person smitlife; 27.06.2012

Измените свой код как:

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" />
person ρяσѕρєя K    schedule 27.06.2012
comment
не работает :( не могли бы вы скачать и проверить? docs.google.com/file /d/0B8kSGDgP5vndelVZRnJ0YUZ0U0k/edit - person smitlife; 27.06.2012
comment
посмотрите мой ответ на редактирование, теперь он работает, вам нужно просто зарегистрировать все свои действия в манифасте - person ρяσѕρєя K; 27.06.2012
comment
я могу видеть тост, когда ImageButton Clicked - person ρяσѕρєя K; 28.06.2012
comment
только что сделано, как вы сделали .. даже зарегистрируйтесь в manifest.xml ... все еще не работает .. есть ли какой-нибудь веб-сайт для изучения? видео? пожалуйста - person smitlife; 28.06.2012