【问题标题】:OnClickListener not respondingOnClickListener 没有响应
【发布时间】:2014-07-12 21:33:38
【问题描述】:

我的点击监听器无法正常工作。 ImageButton 检索正确。

监听器(扩展我正在设置视图的自定义活动):

@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");
        }
    });
}

基础活动

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

布局:

<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" />

清单:

<?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>

LogCat 没有错误,onClick 方法没有被调用。 我尝试了使用监听器的不同方法,但从未得到任何响应。我还尝试了一个对我有用但没有响应的代码。

如果你能帮帮我就好了;)

【问题讨论】:

  • 你能发布Android Manifest的内容吗?而且我也看不到setContentView
  • @Cristian 添加了清单。设置的内容视图在 BaseActivity 中。 onClickListener 应该设置在 UserActivity 中,它扩展了 BaseActivity。
  • @Mike 添加了 BaseActivity
  • 一些 ? 的:你确定 UserActivitygetLayoutId() 方法返回正确的布局与 user_button_ratings?抽屉在UserActivity 中工作吗?您是否看到UserActivityonCreate() 方法的logcat 条目?你如何启动UserActivity
  • 布局加载正确,抽屉也正常工作。我可以看到来自 UserActivity 的日志条目。 UserActivity 是在我的登录任务执行后使用 startActivity() 启动的。

标签: java android onclicklistener


【解决方案1】:

当使用DrawerLayout 时,应该只有一个主要内容View,抽屉View - 在这种情况下,您的ListView - 列在它之后。以任何其他方式使用 DrawerLayout 会导致不正确、不可预测的行为,通常会妨碍与其他布局元素的正常交互。

可在this developer page 上找到包含示例和文档链接的教程。

【讨论】:

    【解决方案2】:

    这里我给出一个图像按钮的例子。如果它也给出错误,那么清理eclipse项目并重试。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多