Android 在我的活动中,我的侦听器不工作
我的布局有13个文本视图,单击这些文本视图可更改ListView项目 以下是我的活动:Android 在我的活动中,我的侦听器不工作,android,onclick,Android,Onclick,我的布局有13个文本视图,单击这些文本视图可更改ListView项目 以下是我的活动: public class ExampleActivity extends ListActivity implements OnClickListener { private String[] sa = new String[100]; private ListView lv; private Context context = this; private Ar
public class ExampleActivity extends ListActivity implements
OnClickListener {
private String[] sa = new String[100];
private ListView lv;
private Context context = this;
private ArrayAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new LongOperation().execute("1");
lv = getListView();
}
private class LongOperation extends AsyncTask<String, Void, String> {
private ProgressDialog dialog = new ProgressDialog(
ExampleActivity.this);
@Override
protected String doInBackground(String... params) {
int i = Integer.parseInt(params[0]);
for (int n = 0; n < 100; n++) {
if (i != 5 && i != 10) {
sa[n] = "Item" + i;
} else {
}
}
return params[0];
}
@Override
protected void onPostExecute(String result) {
adapter = new ArrayAdapter<Object>(context,
android.R.layout.simple_list_item_1, sa);
lv.setAdapter(adapter);
this.dialog.dismiss();
}
@Override
protected void onPreExecute() {
this.dialog.setMessage("Please wait");
this.dialog.show();
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
public void onClick(View v) {
Log.d("onClick", v.getId() + "**");
int id = v.getId();
switch (id) {
case R.id.tv1: {
new LongOperation().execute("1");
}
case R.id.tv2: {
new LongOperation().execute("2");
}
case R.id.tv3: {
new LongOperation().execute("3");
}
case R.id.tv4: {
new LongOperation().execute("4");
}
case R.id.tv5: {
new LongOperation().execute("5");
}
case R.id.tv6: {
new LongOperation().execute("6");
}
case R.id.tv7: {
new LongOperation().execute("7");
}
case R.id.tv8: {
new LongOperation().execute("8");
}
case R.id.tv9: {
new LongOperation().execute("9");
}
case R.id.tv10: {
new LongOperation().execute("10");
}
case R.id.tv11: {
new LongOperation().execute("11");
}
case R.id.tv12: {
new LongOperation().execute("12");
}
case R.id.tv13: {
new LongOperation().execute("13");
}
}
}
}
公共类ExampleActivity扩展ListActivity实现
onclick侦听器{
私有字符串[]sa=新字符串[100];
私有ListView lv;
私有上下文=这个;
专用阵列适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
新长操作()。执行(“1”);
lv=getListView();
}
私有类LongOperation扩展了异步任务{
private ProgressDialog=新建ProgressDialog(
例如,这项活动);
@凌驾
受保护的字符串doInBackground(字符串…参数){
int i=Integer.parseInt(参数[0]);
对于(int n=0;n<100;n++){
如果(i!=5&&i!=10){
sa[n]=“项目”+i;
}否则{
}
}
返回参数[0];
}
@凌驾
受保护的void onPostExecute(字符串结果){
适配器=新阵列适配器(上下文,
android.R.layout.simple_list_item_1,sa);
低压设置适配器(适配器);
this.dialog.disclose();
}
@凌驾
受保护的void onPreExecute(){
this.dialog.setMessage(“请稍候”);
this.dialog.show();
}
@凌驾
受保护的void onProgressUpdate(void…值){
}
}
公共void onClick(视图v){
Log.d(“onClick”,v.getId()+“**”);
int id=v.getId();
开关(id){
案例R.id.tv1:{
新长操作()。执行(“1”);
}
案例R.id.tv2:{
新长操作()。执行(“2”);
}
案例R.id.tv3:{
新长操作()。执行(“3”);
}
案例R.id.tv4:{
新长操作()。执行(“4”);
}
案例R.id.tv5:{
新长操作()。执行(“5”);
}
案例R.id.tv6:{
新长操作()。执行(“6”);
}
案例R.id.tv7:{
新长操作()。执行(“7”);
}
案例R.id.tv8:{
新长操作()。执行(“8”);
}
案例R.id.tv9:{
新长操作()。执行(“9”);
}
案例R.id.tv10:{
新长操作()。执行(“10”);
}
案例R.id.tv11:{
新长操作()。执行(“11”);
}
案例R.id.tv12:{
新长操作()。执行(“12”);
}
案例R.id.tv13:{
新长操作()。执行(“13”);
}
}
}
}
启动应用程序时,listView将填充为item1。但是当我点击任何文本视图时,onClick方法不会被触发。我用日志检查了一下
谢谢。因为您没有向您的
文本视图注册onClickListener
,因此您的文本视图不会被点击
为此,你必须做一些事情,比如
onCreate()
{
TextView tv1 = (TextVIew)findViewById(R.id.tv1);
tv1.setOnClickListener(this);
更好的解决方案:
在活动的xml布局文件中
在所有TextView
put属性android:onClick=“textClick”
现在将onClickListener从您的活动中删除,只需编写
public void textClick(View TextView)
在你的活动中。然后,您不必为所有TextView注册onClicklistener。安卓为你自己做 之所以会发生这种情况,是因为您没有将setOnClickListener()
用于TextView
这是使用OnClickListener时提供的示例程序
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(this); // have a look on this line. registering.
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
}
将此静态函数添加到activity类中,我可以在myMainActivity.java中使用此函数
public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
文本视图作为列表视图填充。尝试为此使用setOnItemClickListener。我的文本视图与ListView不同。它们类似于布局顶部、listView上方的选项卡按钮,因此设计类似于listView顶部和下方的文本视图。现在textView onclick不起作用了?您是否在文本视图中使用过setOnclickListener?没有。但是我在布局中设置了TextViews clickable=true,并在活动中实现了onClickListener。您是否发布了与上面相同的代码?