运行方法onclick崩溃在android [英] run method onclick crash in android

查看:261
本文介绍了运行方法onclick崩溃在android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在编写一个简单的在Android上的消息应用程序。我有一个类中的服务器 runServer ,运行完美。然后我在我的 mainActivity 中的一个方法中有一个客户端。我有一个按钮,它有一个 onclick =startClient。但每当我运行点击按钮,我得到一个错误。

  03-11 13:01:40.622:E / AndroidRuntime(718):java.lang.IllegalStateException:
找不到方法startClient(View)在活动类com.example.datorkomprojekt.MainActivity
on onClick处理程序在视图类android.widget.Button与id'connect'



我可以如何解决这个问题?



MainActivity

  public class MainActivity extends Activity {

private Socket socket;
private ObjectInputStream ois;
private DataOutputStream dos;


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

runOnUiThread(new Runnable(){
public void run(){
EditText et =(EditText)findViewById(R.id.message_id);
String message = et.getText()。toString();
EditText et1 =(EditText)findViewById(R.id.messages);
et1.append(message);
}
});
}

public void startClient(){
socket = new Socket();
InetSocketAddress ipPort = new InetSocketAddress(10.0.2.15,4444);
try {
socket.connect(ipPort);
dos = new DataOutputStream(socket.getOutputStream());
} catch(Exception e){
}
线程线程= new Thread();
thread.start();
}

}

服务器类

  public class RunServer {

private ServerSocket server;
private Socket socket;
private DataInputStream dis;
private int port;

public RunServer(int port){
this.port = port;
thread connectThread = new Thread(new Connect());
connectThread.start();
}

private class Connect implements Runnable {

public void run(){

try {
server = new ServerSocket(port);
System.out.println(Server running);
while(true){
socket = server.accept();
Thread clientThread = new Thread(new TalkToClient(socket));
clientThread.start();
System.out.println(someone connected);
}
} catch(IOException ex){
Logger.getLogger(RunServer.class.getName())。log(Level.SEVERE,null,ex);
}
try {
server.close();
} catch(Exception e){}
}
}

私人类TalkToClient实现Runnable {

private Socket socket;
public TalkToClient(Socket socket){
this.socket = socket;
}

public void run(){

String clientMsg;
try {
dis = new DataInputStream(socket.getInputStream());
while((clientMsg = dis.readUTF())!= null){
if(clientMsg.length()> 0){

}
}
} catch(Exception e){
System.out.println(e);
}

}

}

public static void main(String [] args){
new RunServer );
}

}

XML布局

 < RelativeLayout xmlns:android =http://schemas.android.com/apk/res/android
xmlns:tools =http://schemas.android.com/tools
android:layout_width =match_parent
android:layout_height =match_parent
android:background =@ drawable / bakgrund
android:paddingBottom =@ dimen / activity_vertical_margin
android:paddingLeft =@ dimen / activity_horizo​​ntal_margin
android:paddingRight =@ dimen / activity_horizo​​ntal_margin
android:paddingTop = @ dimen / activity_vertical_margin
tools:context =。MainActivity>

< TextView
android:id =@ + id / textView1
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_alignParentTop =true
android:text =@ string / ip
android:textAppearance =?android:attr / textAppearanceMedium
android:textColor =@ color / white/>

< EditText
android:id =@ + id / ip_id
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_alignParentRight =true
android:layout_below =@ + id / textView1
android:background =@ color / white
android:ems =10
android:hint =@ string / get_ip
android:inputType =numberDecimal>

< requestFocus />
< / EditText>

< TextView
android:id =@ + id / textView2
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_below =@ + id / ip_id
android:text =@ string / port
android:textAppearance = attr / textAppearanceMedium
android:textColor =@ color / white/>

< EditText
android:id =@ + id / port_id
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_alignParentRight =true
android:layout_below =@ + id / textView2
android:background =@ color / white
android:ems =10
android:hint =@ string / get_port
android:inputType =number/>

< TextView
android:id =@ + id / textView3
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignLeft =@ + id / port_id
android:layout_below =@ + id / port_id
android:text =@ string / message
android:textAppearance = ?android:attr / textAppearanceMedium
android:textColor =@ color / white/>

< EditText
android:id =@ + id / message_id
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_alignParentRight =true
android:layout_below =@ + id / textView3
android:background =@ color / white
android:ems =10
android:hint =@ string / get_message/>

< Button
android:id =@ + id / connect
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentLeft =true
android:layout_below =@ + id / message_id
android:text =@ string / connect
android:textColor =@ color / white
android:onClick =startClient/>

< Button
android:id =@ + id / send
style =?android:attr / buttonStyleSmall
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignBaseline =@ + id / connect
android:layout_alignBottom =@ + id / connect
android:layout_toRightOf = @ + id / connect
android:text =@ string / send
android:textColor =@ color / white/>

< TextView
android:id =@ + id / status_id
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignLeft =@ + id / connect
android:layout_below =@ + id / send
android:layout_marginTop =23dp
android:text =@ string / status
android:textAppearance =?android:attr / textAppearanceMedium
android:textColor =@ color / white/>

< EditText
android:id =@ + id / messages
android:layout_width =wrap_content
android:layout_height =wrap_content
android:layout_alignParentBottom =true
android:layout_alignParentLeft =true
android:layout_alignParentRight =true
android:layout_below =@ + id / status_id
android:background =@ color / white
android:ems =10
android:inputType =textMultiLine/>

< / RelativeLayout>


解决方案

public void startClient v) ..这将是方法的签名



UPDATE:



因为每个人都发布相同的答案,我想我更好地提高我的答案有点。虽然单行解决了你的问题如果你有空闲的时间,你可以看到以下链接..在那里你可以找到清楚的概念,不同的方式来处理点击事件



< a href =http://www.remwebdevelopment.com/dev/a69/Different-Ways-To-Handle-Clicks.html =nofollow> http://www.remwebdevelopment.com/dev/a69/ Different-Ways-To-Handle-Clicks.html



http://smartcloudblog.blogspot.com/2011/09/android-onclicklisteners-vs.html


I am currently working on writing a simple message application on Android. I have the server in a class called runServer, which runs perfectly. Then i have a client in a method in my mainActivity. I have a button, which has an onclick="startClient". but whenever i run an click on the button, i get an error.

03-11 13:01:40.622: E/AndroidRuntime(718): java.lang.IllegalStateException: 
Could not find a method startClient(View) in the activity class com.example.datorkomprojekt.MainActivity 
for onClick handler on view class android.widget.Button with id 'connect'

What can I do to solve this?

MainActivity

public class MainActivity extends Activity {

private Socket socket;
private ObjectInputStream ois;
private DataOutputStream dos;


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

    runOnUiThread(new Runnable(){
        public void run(){
        EditText et = (EditText) findViewById(R.id.message_id);
        String message = et.getText().toString();
        EditText et1 = (EditText) findViewById(R.id.messages);
        et1.append(message);
        }
    });
}

    public void startClient() {
        socket = new Socket();
        InetSocketAddress ipPort = new InetSocketAddress("10.0.2.15", 4444);
        try {
            socket.connect(ipPort);
            dos = new DataOutputStream(socket.getOutputStream());
        } catch (Exception e) {
        }
        Thread thread = new Thread();
        thread.start();
    }

}

server class

public class RunServer {

private ServerSocket server;
private Socket socket;
private DataInputStream dis;
private int port;

public RunServer(int port){
    this.port = port;
    Thread connectThread = new Thread( new Connect() );
    connectThread.start();
}

private class Connect implements Runnable {

public void run() {

    try {
        server = new ServerSocket(port);
    System.out.println("Server running");
    while (true) {
        socket = server.accept();
            Thread clientThread = new Thread( new TalkToClient( socket ) );
            clientThread.start();
            System.out.println("someone connected");
    }
        } catch (IOException ex) {
            Logger.getLogger(RunServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    try {
        server.close();
        } catch( Exception e ) {}
    }
}

private class TalkToClient implements Runnable{

    private Socket socket;
    public TalkToClient( Socket socket ) {
    this.socket = socket;
    }

public void run() {

    String clientMsg;
    try {
         dis = new DataInputStream(socket.getInputStream());
        while ((clientMsg = dis.readUTF()) != null) {
            if (clientMsg.length() > 0) {

            }
        }
    } catch (Exception e) {
        System.out.println(e);
    }

}

}

public static void main(String[] args) {
    new RunServer(4444);
}

}

XML layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bakgrund"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/ip"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/white" />

<EditText
    android:id="@+id/ip_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView1"
    android:background="@color/white"
    android:ems="10"
    android:hint="@string/get_ip"
    android:inputType="numberDecimal" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/ip_id"
    android:text="@string/port"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/white" />

<EditText
    android:id="@+id/port_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView2"
    android:background="@color/white"
    android:ems="10"
    android:hint="@string/get_port"
    android:inputType="number" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/port_id"
    android:layout_below="@+id/port_id"
    android:text="@string/message"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/white" />

<EditText
    android:id="@+id/message_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView3"
    android:background="@color/white"
    android:ems="10"
    android:hint="@string/get_message" />

<Button
    android:id="@+id/connect"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/message_id"
    android:text="@string/connect"
    android:textColor="@color/white"
    android:onClick="startClient" />

<Button
    android:id="@+id/send"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/connect"
    android:layout_alignBottom="@+id/connect"
    android:layout_toRightOf="@+id/connect"
    android:text="@string/send"
    android:textColor="@color/white" />

<TextView
    android:id="@+id/status_id"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/connect"
    android:layout_below="@+id/send"
    android:layout_marginTop="23dp"
    android:text="@string/status"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/white" />

<EditText
    android:id="@+id/messages"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/status_id"
    android:background="@color/white"
    android:ems="10"
    android:inputType="textMultiLine" />

</RelativeLayout>

解决方案

public void startClient(View v) .. this will be the signature of the method

UPDATE:

as everybody is posting the same answer I think I better improve my answer a bit. Although the single line has solved your problem If you get free time you can see the following links .. There you can find clear concept about different ways to handle click events

http://www.remwebdevelopment.com/dev/a69/Different-Ways-To-Handle-Clicks.html

http://smartcloudblog.blogspot.com/2011/09/android-onclicklisteners-vs.html

这篇关于运行方法onclick崩溃在android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆