Java 无法启动类型View.onclicklistner
我在第174行收到此错误Java 无法启动类型View.onclicklistner,java,Java,我在第174行收到此错误 代码运行正常,但在上次更新后,我收到了无法启动View.onclicklistner类型的错误 这是使用WebSocket的聊天功能的客户端代码 如何解决这个问题 包de.lauridmeyer.com.tests import org.jwebsocket.api.WebSocketClientEvent; import org.jwebsocket.api.WebSocketClientTokenListener; import org.jwebsocket.api
代码运行正常,但在上次更新后,我收到了无法启动View.onclicklistner类型的错误 这是使用WebSocket的聊天功能的客户端代码 如何解决这个问题 包de.lauridmeyer.com.tests
import org.jwebsocket.api.WebSocketClientEvent;
import org.jwebsocket.api.WebSocketClientTokenListener;
import org.jwebsocket.api.WebSocketPacket;
import org.jwebsocket.client.plugins.rpc.Rpc;
import org.jwebsocket.client.plugins.rpc.RpcListener;
import org.jwebsocket.client.plugins.rpc.Rrpc;
import org.jwebsocket.client.token.BaseTokenClient;
import org.jwebsocket.kit.WebSocketException;
import org.jwebsocket.token.Token;
import org.jwebsocket.token.TokenFactory;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class SimpleJWAndroidClientActivity extends Activity implements WebSocketClientTokenListener{
//GUI Elements
private static TextView log;
private static TextView Chatlog;
private static EditText ipadress;
private static EditText Message;
private static Button send;
private static Button conBtn;
private String entered_msg=null;
TextView customDialog_TextView;
Button customDialog_Yes, customDialog_No;
static final int CUSTOM_DIALOG_ID = 0;
public static String decision=null;
//stores if the SLider is changed by the user or the server
private static Boolean isDragging=false;
//stores the connection status
private static Boolean connected=false;
//used for the connection
private static BaseTokenClient btc = new BaseTokenClient();//create a new instance of the base token client
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
log = (TextView)findViewById(R.id.log);//Textview to Display Messages
ipadress=(EditText)findViewById(R.id.ipadress);//inputfield for the ipadress
Chatlog=(TextView)findViewById(R.id.chat);
conBtn= (Button)findViewById(R.id.conBtn);//(dis)connection button
Message=(EditText)findViewById(R.id.Message);
send= (Button)findViewById(R.id.Send);
//add the listener for the slider and the (dis)connection Button
conBtn.setOnClickListener(buttonConnectOnClickListener);
//add the listener for the websocket connection
btc.addListener(this);//add this class as a listener
btc.addListener(new RpcListener());//add an rpc listener
Rpc.setDefaultBaseTokenClient(btc);//set it to the default btc
Rrpc.setDefaultBaseTokenClient(btc);//same here
//set the connection status to "not connected" on startup
changeConnectionStatus(false);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
entered_msg = Message.getText().toString();
Token firstToken = TokenFactory.createToken("com.lauridmeyer.tests.LauridsPlugIn","Welcomemessage");
firstToken.setString("message",entered_msg);//add the message to the token
try {
btc.sendToken(firstToken);//try to send the token to the server
} catch (WebSocketException ex) {
outputText("error:"+ex.getMessage());//log errors
}
}
});
}
private OnClickListener buttonConnectOnClickListener = new OnClickListener() {
public void onClick(View v){
if(!connected){//if not connected
try{
String ipAdress=ipadress.getText().toString();//get the ip-adress from the inputfield
outputText("connecting to "+ipAdress+" ...");//debug
btc.open(ipAdress);//try to open the connection to your server
}catch(Exception e){
outputText("Error while connecting...");//log errors
}
}else{//if connected
try{
btc.close();//try to close
}catch(Exception e){
outputText(e.toString());//log errors
}
}
}
};
// private static SeekBar.OnSeekBarChangeListener seekbarchangedListener = new SeekBar.OnSeekBarChangeListener(){
// //Method is fired everytime the seekbar is changed
// @Override
// public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// if(isDragging && connected){//if the ssekbar is changed by the user and not by the server
// //create a new Token with the namspace, and type
// Token tempToken = TokenFactory.createToken("com.lauridmeyer.tests.LauridsPlugIn","sliderChanged");
// tempToken.setInteger("value",progress);//add an integer to the token
// try {
// btc.sendToken(tempToken);//try to send the token to the server
// } catch (WebSocketException ex) {
// outputText("error:"+ex.getMessage());//log errors
// }
// }
// }
//
// @Override
// public void onStartTrackingTouch(SeekBar seekBar) {
// isDragging=true;//turn the sending mechanism on
// }
//
// @Override
// public void onStopTrackingTouch(SeekBar seekBar) {
// isDragging=false;//turn the sending mechanism off
// }
// };
/* Method is called when the connection status has changed
* connected <-> disconnected */
public static void changeConnectionStatus(Boolean isConnected) {
connected=isConnected;//change variable
//seekBar.setEnabled(isConnected);//enable/disable seekbar
if(isConnected){//if connection established
outputText("successfully connected to server");//log
conBtn.setText("DISCONNECT");//change Buttontext
}else{
outputText("disconnected from Server!");//log
conBtn.setText("CONNECT");//change Buttontext
}
}
/* Method prints text to the log textfield*/
public static void outputText(String msg) {
log.append(msg+"\n");
}
/* Message handler is used to process incoming tokens from the server*/
private Handler messageHandler = new Handler() {
@Override
public void handleMessage(Message aMessage) {
if(aMessage.what==0){//if it's a token
Token aToken =(Token) aMessage.obj;//get the received token
//if the namespace matches my plugin
if(aToken.getNS().equals("com.lauridmeyer.tests.LauridsPlugIn")){
//and it's a command that the slider has changed
//String wM = aToken.getString("Welcomemessage");
if(aToken.getString("reqType").equals("sliderHasChanged")){
int value=aToken.getInteger("value");//get the slider value
isDragging=false;//make sure that the slider changes are not recognized as user inputs
//seekBar.setProgress(value);//move the slider to the recieved position
}
if(aToken.getString("reqType").equals("Welcomemessage")){
String message=aToken.getString("Welcomemessage");//get the slider value (here)
Chatlog.setOnClickListener(new View.OnClickListener());
Toast.makeText(getApplicationContext(),message,Toast.LENGTH_LONG).show();
}
}
}
}
};
@Override
public void processOpened(WebSocketClientEvent aEvent) {
changeConnectionStatus(true);//when connected change the status
}
@Override
public void processClosed(WebSocketClientEvent aEvent) {
changeConnectionStatus(false);//when disconnected change the status
}
@Override
public void processToken(WebSocketClientEvent aEvent, Token aToken) {
//for some reason you can't process the token directly
//you have to use the messagehandler
Message lMsg = new Message();//create a new mess
lMsg.what = 0;
lMsg.obj = aToken;
messageHandler.sendMessage(lMsg);
}
//following Methods are not used in this example, but have to be there :)
@Override
public void processPacket(WebSocketClientEvent aEvent, WebSocketPacket aPacket) {
}
@Override
public void processOpening(WebSocketClientEvent aEvent) {
}
@Override
public void processReconnecting(WebSocketClientEvent aEvent) {
}
}
import org.jwebsocket.api.WebSocketClientEvent;
导入org.jwebsocket.api.WebSocketClientTokenListener;
导入org.jwebsocket.api.WebSocketPacket;
导入org.jwebsocket.client.plugins.rpc.rpc;
导入org.jwebsocket.client.plugins.rpc.RpcListener;
导入org.jwebsocket.client.plugins.rpc.Rrpc;
导入org.jwebsocket.client.token.BaseTokenClient;
导入org.jwebsocket.kit.WebSocketException;
导入org.jwebsocket.token.token;
导入org.jwebsocket.token.TokenFactory;
导入android.app.Activity;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.Message;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入android.widget.Toast;
公共类SimpleJwandroidClient活动扩展活动实现WebSocketClientTokenListener{
//GUI元素
私有静态文本视图日志;
私有静态文本视图聊天日志;
私有静态编辑;
私有静态文本消息;
私有静态按钮发送;
专用静态按钮conBtn;
输入的私有字符串\u msg=null;
TextView自定义对话框\u TextView;
按钮customDialog\u是,customDialog\u否;
静态最终整型自定义对话框ID=0;
公共静态字符串决策=null;
//存储用户或服务器是否更改滑块
私有静态布尔IsDraging=false;
//存储连接状态
私有静态布尔连接=false;
//用于连接
private static BaseTokenClient btc=new BaseTokenClient();//创建基本令牌客户端的新实例
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
log=(TextView)findViewById(R.id.log);//显示消息的TextView
iPAddress=(EditText)findViewById(R.id.iPAddress);//iPAddress的inputfield
Chatlog=(TextView)findviewbyd(R.id.chat);
conBtn=(按钮)findViewById(R.id.conBtn);/(dis)连接按钮
Message=(EditText)findViewById(R.id.Message);
send=(按钮)findviewbyd(R.id.send);
//为滑块和(dis)连接按钮添加侦听器
conBtn.setOnClickListener(按钮onconnectonclicklistener);
//为websocket连接添加侦听器
addListener(this);//将此类添加为侦听器
addListener(新的RpcListener());//添加一个rpc侦听器
Rpc.setDefaultBaseTokeClient(btc);//将其设置为默认btc
Rrpc.setDefaultBaseTokeClient(btc);//此处相同
//启动时将连接状态设置为“未连接”
更改连接状态(错误);
send.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
输入了_msg=Message.getText().toString();
Token firstToken=TokenFactory.createToken(“com.lauridmeyer.tests.LauridsPlugIn”,“Welcomemessage”);
firstToken.setString(“message”,输入_msg);//将消息添加到令牌
试一试{
btc.sendToken(firstToken);//尝试将令牌发送到服务器
}捕获(WebSocketException例外){
outputText(“错误:+ex.getMessage());//记录错误
}
}
});
}
私有OnClickListener按钮onConnectionClickListener=新OnClickListener(){
公共void onClick(视图v){
如果(!已连接){//如果未连接
试一试{
字符串ipAddress=ipAddress.getText().toString();//从inputfield获取ip地址
outputText(“连接到“+iPAddress+”);//调试
btc.open(ipAddress);//尝试打开与服务器的连接
}捕获(例外e){
outputText(“连接时出错…”);//记录错误
}
}else{//如果已连接
试一试{
btc.close();//尝试关闭
}捕获(例外e){
outputText(例如toString());//记录错误
}
}
}
};
//私有静态SeekBar.OnSeekBarChangeListener seekbarchangedListener=新建SeekBar.OnSeekBarChangeListener(){
////每次更改seekbar时都会激发方法
//@覆盖
//public void onProgressChanged(SeekBar-SeekBar、int-progress、boolean-fromUser){
//if(isDraging&&connected){//如果用户而不是服务器更改了ssekbar
////使用namspace创建一个新令牌,然后键入
//Token Testoken=TokenFactory.createToken(“com.lauridmeyer.tests.LauridsPlugIn”,“sliderChanged”);
//setInteger(“value”,progress);//向令牌添加一个整数
//试一试{
//btc.sendToken(testoken);//尝试将令牌发送到服务器
//}catch(WebSocketException-ex){
//outputText(“错误:+ex.getMessage());//记录错误
// }
// }
// }
//
//@覆盖
//开始跟踪触摸时的公共无效(SeekBar SeekBar){
//IsDraging=true;//打开发送机制
// }
//
//@覆盖
//TopTrackingTouch(SeekBar SeekBar)上的公共无效{
//IsDraging=false;//关闭发送机制
// }
// };
/*方法在连接状态更改时调用
*连接断开*/
公共静态无效更改
Chatlog.setOnClickListener(new View.OnClickListener());