【问题标题】:onClickListener not working that was copied from another working activity从另一个工作活动复制的 onClickListener 不起作用
【发布时间】:2012-08-04 02:33:33
【问题描述】:

我创建了一个新活动,将其添加到我的清单文件中,并从另一个功能齐全的活动中复制和粘贴代码,但是当我单击它们时,我的按钮不起作用。这是我的活动:

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;    

public class test extends Activity {

private Button btnChangeDate;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.salesticketoilui);
    mainProgram();
    }

public void mainProgram() {
    btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
    btnChangeDate.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            showDialog(DATE_DIALOG_ID);
        } // end onClick
    }); // end setOnClickListener

    Button buttonExit = (Button)findViewById(R.id.buttonExit);
    buttonExit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
             exitActivity();          
        } // end onClick
    }); // end OnClickListener

    // setup button listener for saving data and exit to main
    Button buttonSaveExit = (Button) findViewById(R.id.buttonSaveExit);
    buttonSaveExit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            saveExit();
        } // end onClick
    }); // end OnClickListener

} // end MainProgram ()

    public void saveExit() {
        // does stuff
    }

    public void exitActivity () {
        // does stuff
    }

} // end class 

有什么想法吗?

【问题讨论】:

    标签: android eclipse button onclicklistener


    【解决方案1】:

    根据您显示的代码,您似乎从未调用过 mainProgram 方法,因此您的点击侦听器将永远不会真正得到设置。从onCreate 调用mainProgram 或者直接将该代码放入onCreate

    【讨论】:

    • 对不起,我不小心把它从复制粘贴问题更新了
    • 将代码复制到 onCreate 后,按钮开始工作。我不明白为什么,因为它在其他活动中运行良好。想法?
    • 嗯,不,你应该可以从 onCreate 调用其他方法没有问题
    【解决方案2】:

    我相信onClickListeners 需要进入您的onCreate 方法。

    【讨论】:

    • 在我从中复制它的活动中,它在 mainProgram() 方法中正常工作
    • 您是否在其他活动中调用了mainProgram() 方法?又名:有什么东西触发了 mainProgram()?
    • 从 OnCreate 调用 mainProgram() 方法
    【解决方案3】:

    听斯科特的声音

    看起来你错过了@Override

    new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             exitActivity();          
        } // end onClick
    }
    

    确保您的 java 设置为 1.6 以避免代码完成丢失此内容。

    【讨论】:

    • 在我从中复制它的活动中,在没有“@Override”的情况下可以正常工作
    • @Override 在实现接口时不是必需的(这也包括从一个接口创建匿名类)。
    【解决方案4】:

    我在将带有 ImageButtons 的 OnClickListener 从一个类复制到另一个类,然后使用批量复制/粘贴重命名时遇到了同样的问题。 为了使它工作,我必须在我的布局中创建新按钮并手动声明事件。奇怪!

    【讨论】:

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