Java 无法启动类型View.onclicklistner

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

我在第174行收到此错误
代码运行正常,但在上次更新后,我收到了无法启动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());