我有一段代码为几个TextView对象设置OnClickListener 但是,当我单击其中一个时,它会执行与列表中位于其下方的所有其他TextView对象关联的所有操作。 码:

    TextView wake = (TextView) findViewById(R.id.wake);
    TextView ringer = (TextView) findViewById(R.id.ringer);
    TextView nap = (TextView) findViewById(R.id.nap);
    TextView camera = (TextView) findViewById(R.id.camera);
    TextView volumes = (TextView) findViewById(R.id.volumes);
    TextView gallery = (TextView) findViewById(R.id.gallery);

    wake.setOnClickListener(this);
    ringer.setOnClickListener(this);
    nap.setOnClickListener(this);
    camera.setOnClickListener(this);
    volumes.setOnClickListener(this);
    gallery.setOnClickListener(this);

到目前为止,我在onClick方法中有以下Switch - Case语句:

@Override
public void onClick(View v) {
    Intent intent;

    switch (v.getId()) {

    case R.id.wake:

    case R.id.ringer:
        setRingerState(true);

    case R.id.nap:

    case R.id.camera:
        intent = new Intent("android.media.action.IMAGE_CAPTURE");
        startActivity(intent);
        this.finish();

    case R.id.volumes:


    case R.id.gallery:
        intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivity(intent);
        this.finish();

请注意,我目前只实现了其中三个。 会发生的是,如果我选择TextView for gallery ,它只会触发其关联的操作。 但是,如果我选择camera ,它会启动自身和画廊的动作。 如果我选择ringer ,它将改变铃声状态,启动相机和画廊。

我猜这与我为所有这些对象设置相同的OnClickListener这一事实有关,但是我真的必须这样做:

    ringer.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            setRingerState(true);

        }   
    });

每一个人? 看起来很难看。 我有其他选择还是我错过了什么?

谢谢你的帮助。

===============>>#1 票数:4

每个案例后你需要打破:

case R.id.ringer:
  setRingerState(true);
  break;
case R.id.camera:
  intent = new Intent("android.media.action.IMAGE_CAPTURE");
  startActivity(intent);
  finish();
  break;
// etc

否则执行就会失败并且所有函数都会运行。

  ask by unaligned translate from so

未解决问题?本站智能推荐:

1回复

关闭外设导致意外行为

使用Android 4.3 / Samsung BLE 2.0 SDK时,观察到当外围设备关闭时,SDK将立即或在延迟20秒后接收onConnectionStateChange(DEVICE_DISCONNECTED)。 根据我的经验,这取决于外围设备实现,其中一些将尝试报告它们被关闭而有些则
2回复

按下后退按钮导致意外行为

我有两个活动。 活动A包含卡片视图元素的回收者视图,其中包含图像。 在活动A中选择元素时。活动B中将显示图像的完整横向版本。 活动B的布局文件如下: 活动B的代码库如下: 但是,当我按下设备上的“后退”按钮而不是返回到“活动A”时。状态和导航按钮将显示并隐藏,并且需要四
1回复

后退按钮导致意外行为

我有两个活动。 活动A包含卡片视图元素的回收者视图,其中包含图像。 在活动A中选择一个元素。 图像的完整横向版本显示在活动B中 。 活动B的布局文件如下: 活动B的代码库如下: 但是,当我按设备上的后退按钮而不是返回到活动A时 。 状态和导航按钮被显示和隐藏,并且需
1回复

Android-试图以意图获取对本地存储图像的引用会导致意外行为

应该发生什么: 用户单击一个按钮,该按钮将显示其手机的图片库。 他们通过startActivityForResult选择一个图像,然后我从中获取路径并从那里进行处理。 怎么了: 当我单击按钮时,图库会完美打开。 但是,当我选择图像时,永远不会调用onActivityResu
2回复

Android Studio 2.3更新:警告:使用不兼容的插件进行注释处理:android-apt。 这可能会导致意外行为

因此,我已经阅读了有关此问题的所有问题。 我还与一位具有类似问题的开发人员(有能力解决此问题)进行了评论聊天。 我没有在gradle脚本中的任何位置写apt或commentProcessor。 我的代码中没有任何地方写有android-apt这个词。 我什至继续检查所有的图书馆。
3回复

从多个类调用setOnClickListener只会导致一个回调吗?

我希望能够动态地为ListView更改OnItemClickListener 。 但是, API不清楚这是否可以接受,也不清楚如果我这样做会产生什么结果。 我想要的是,如果我从一个类调用listView.setOnItemClickListener() ,然后再从另一个类调用,那么只有更
1回复

在dismiss()之后调用finish()具有意外行为

我有一个Activity ,可以创建并显示一个Dialog来显示完成进度。 我希望在dismiss Dialog之后立即finish() Activity finish() : 但是,当我这样做时,我看到屏幕向后旋转(我强迫风景,而传感器说是纵向)。 另外,屏幕在一段时间内呈黑色。
5回复

IntentService的意外行为

我在我的代码中使用了IntentService而不是Service,因为IntentService在onHandleIntent(Intent intent)中为我创建了一个线程,所以我不必在我的服务代码中创建一个Thead。 我期望同一个IntentSerivce的两个意图将并行执行,因
1回复

ProGuard意外行为

我有一个Android项目,我正在使用progaurd来混淆代码。 我在progaurd-pro文件中有一些自定义规则,可以忽略模型文件。 它忽略包中的所有模型文件,但它不会忽略一个特定文件。 我试过了什么 我将所有模型移动到不同的模块仍然没有区别该文件没有被忽略
2回复

onDataChange意外行为

我在FirstActivity.java上有以下代码: 在SecondActivity.java ,我更新了data值,并在更新时立即启动ThirdActivity ,尽管我从未在SecondActivity调用此活动,并且我怀疑这是由于它发生在FirstActivity.java (这