2014-07-12 5 views
1

Je n'arrive pas à faire fonctionner mes écouteurs de clic. ImageButton est récupéré correctement.OnClickListener ne répond pas

Listener (extension de mon activité personnalisée qui donne le point de vue):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d("UserActivity", "Loading imagebutton..."); 
    ImageButton iButton = (ImageButton) findViewById(R.id.user_button_ratings); 
    Log.d("UserActivity", "Button " + iButton); 
    iButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.e("Button", "Image was clicked"); 
     } 
    }); 
} 

BaseActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(getLayoutId()); 

     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, 
       R.drawable.ic_drawer, 0, 0) { 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(R.string.app_name); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(R.string.menu); 
      } 
     }; 
     drawerLayout.setDrawerListener(drawerToggle); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     layers = getResources().getStringArray(R.array.layers_array); 
     drawerList = (ListView) findViewById(R.id.left_drawer); 

     drawerList.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.adapter_navigation, R.id.navigation_text, layers)); 

     final BaseActivity activity = this; 
     drawerList.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int pos, 
        long arg3) { 
       // Do something 
      } 
     }); 

     drawerList.setBackgroundColor(Color.LTGRAY); 
    } 

Mise en page:

<ImageButton 
    android:id="@+id/user_button_ratings" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:background="@color/transparent" 
    android:scaleType="fitCenter" 
    android:src="@drawable/mmb_rating_big" /> 

Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.panic.xenira.mmb" 
    android:versionCode="2" 
    android:versionName="0.1.1" > 

    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="19" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".SearchActivity" 
      android:label="@string/title_activity_search" > 
     </activity> 
     <activity 
      android:name=".BaseActivity" 
      android:label="@string/title_activity_base" > 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
     </activity> 
     <activity 
      android:name=".UserActivity" 
      android:label="@string/title_activity_user" > 
     </activity> 
     <activity 
      android:name=".UserViewerActivity" 
      android:label="@string/title_activity_user_viewer" > 
     </activity> 
    </application> 

</manifest> 

Il n'y a pas d'erreur dans le LogCat et la méthode onClick n'est pas calée. J'ai essayé différentes méthodes d'utilisation de l'écouteur mais je n'ai jamais eu de réponse. J'ai également essayé un code qui a fonctionné pour moi avant mais aucune réponse.

Si vous culd me aider;)

+0

Pouvez-vous poster le contenu du manifeste Android? Et aussi je ne peux pas voir 'setContentView' – Cristian

+0

@Cristian a ajouté le manifeste. La vue du contenu défini est dans BaseActivity. L'onClickListener doit être défini dans UserActivity, ce qui étend la BaseActivity. – Xenira

+0

@Mike a ajouté la BaseActivity – Xenira

Répondre

2

Lorsque vous utilisez un DrawerLayout, il devrait y avoir qu'un seul contenu principal View, avec le tiroir View - dans ce cas, votre ListView - la liste après. L'utilisation d'un DrawerLayout de toute autre manière entraînera un comportement incorrect et imprévisible, empêchant souvent une interaction normale avec d'autres éléments de disposition.

Un didacticiel avec des liens vers un exemple et des documents peut être trouvé sur this developer page.

1

Ici, je donne un exemple de bouton d'image. Si c'est aussi une erreur, nettoyez les projets d'éclipse et réessayez.

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:layout_marginRight="35dp" 
    android:layout_marginTop="32dp" 
    android:contentDescription="image" 
    android:src="@drawable/ic_launcher" /> 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageButton; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

ImageButton imgButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    addListenerOnButton(); 
} 

private void addListenerOnButton() { 

    imgButton = (ImageButton) findViewById(R.id.imageButton1); 

    imgButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    }); 
} 
}