Android 在我的活动中,我的侦听器不工作

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

我的布局有13个文本视图,单击这些文本视图可更改ListView项目

以下是我的活动:

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。您是否发布了与上面相同的代码?