Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TextView中的setOnClickListener_Java_Android - Fatal编程技术网

Java TextView中的setOnClickListener

Java TextView中的setOnClickListener,java,android,Java,Android,我正在尝试构建一个文本视图,该视图将转到onClick,但它不起作用。他们让我添加此代码。我这样做了,但我有很多错误 这是我的MainActivity.java 这是我的文本视图 <TextView android:id="@+id/state1" android:layout_width="wrap_content" android:layout_height="wrap_content" androi

我正在尝试构建一个文本视图,该视图将转到onClick,但它不起作用。他们让我添加此代码。我这样做了,但我有很多错误

这是我的MainActivity.java

这是我的文本视图

        <TextView
        android:id="@+id/state1"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content"
          android:text="@string/Tracker_model" 
        android:clickable="true"
添加到活动中:

public void modelTextViewClick(View v) {
   //do something on click
}
和布局:

<TextView android:id="@+id/state1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/Tracker_model" 
          android:clickable="true"
          android:onClick="modelTextViewClick"/>

然后删除单击式侦听器。

将下面的代码更改为XML文件

<TextView android:id="@+id/state1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/Tracker_model" 
      android:clickable="true"
      android:onClick="runNextTask"/>

您需要导入此包以避免此错误

缺少此->导入android.view.view.OnClickListener

您还没有从您的onCreate调用runNextTask 正在使用addView方法对布局进行膨胀,但未在活动主布局的任何布局中添加该布局 这就是它不起作用的原因

应该是

package imamalsajadsayings.android.com;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.TextView;
    import android.view.View.OnClickListener;

    public class MainActivity extends Activity {
private LayoutInflater inflater;
private LinearLayout someLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    someLayout = (LinearLayout) findViewById(R.id.some_layout); //layout present in activity_main
    inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    runNextTask();

}
   public void runNextTask(){
       LinearLayout mInflatedLayout = (LinearLayout) inflater.inflate(R.layout.addnewtracker, null);
       final TrackerInfo newInfo = new TrackerInfo();
       //set up for model selection
       TextView modelTextview = (TextView)mInflatedLayout.findViewById(R.id.state1); 
       someLayout.addView(mInflatedLayout);                   
       modelTextview.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {

           }
       });
   }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

    }
假设在活动主布局中使用线性布局


使用下面的一段代码

package imamalsajadsayings.android.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}
  public void runNextTask(){
   final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);
   final TrackerInfo newInfo = new TrackerInfo();
   //set up for model selection
   TextView modelTextview = (TextView)addView.findViewById(R.id.state1);                    

 }


@Override
 public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void modelTextViewClick(View view)
 {
   // here view reference is your text view reference. 
   // put your on click handler code.
 }
}

此代码和您的代码之间的区别是onclick处理程序。在xml中,您已经定义了必须在活动代码中使用的点击处理程序。另一种方法是为小部件设置onclick侦听器处理程序。您可以同时执行这两项操作,但android中的任何小部件都不允许同时执行其中任何一项

请发布您的错误。您不工作是什么意思?您有addnewtracker布局xml文件吗?尝试使用“new View.onClickListener”而不是“new onClickListener”这是我对“public void modelTextViewClickView v”的理解{final View addView=getLayoutInflater.inflateR.layout.activity_main,null;//单击TextView modelTextview=TextViewaddView.findViewByIdR.id.state100;}'仍然不工作onclick listener和onclick handler之间有什么区别?功能上没有区别。当您在xml android中自动设置onclick handler时,或者在内部为您设置onclick listener接口,并且在该接口实现中,如果您的处理程序已满,则将调用您的处理程序。收缩应为publiC
public void runNextTask(View v){
   final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);
   final TrackerInfo newInfo = new TrackerInfo();
   //set up for model selection
   TextView modelTextview = (TextView)addView.findViewById(R.id.state1);                    
   modelTextview.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {

       }
   });
package imamalsajadsayings.android.com;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.widget.TextView;
    import android.view.View.OnClickListener;

    public class MainActivity extends Activity {
private LayoutInflater inflater;
private LinearLayout someLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    someLayout = (LinearLayout) findViewById(R.id.some_layout); //layout present in activity_main
    inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    runNextTask();

}
   public void runNextTask(){
       LinearLayout mInflatedLayout = (LinearLayout) inflater.inflate(R.layout.addnewtracker, null);
       final TrackerInfo newInfo = new TrackerInfo();
       //set up for model selection
       TextView modelTextview = (TextView)mInflatedLayout.findViewById(R.id.state1); 
       someLayout.addView(mInflatedLayout);                   
       modelTextview.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {

           }
       });
   }


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

    }
package imamalsajadsayings.android.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}
  public void runNextTask(){
   final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null);
   final TrackerInfo newInfo = new TrackerInfo();
   //set up for model selection
   TextView modelTextview = (TextView)addView.findViewById(R.id.state1);                    

 }


@Override
 public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void modelTextViewClick(View view)
 {
   // here view reference is your text view reference. 
   // put your on click handler code.
 }
}