Android的IllegalStateException异常:无法执行活动的方法 [英] Android IllegalStateException: Could not execute method of the activity

查看:306
本文介绍了Android的IllegalStateException异常:无法执行活动的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的Andr​​oid。我所要做的是通过网络服务来得到一个字符串的时候我preSS一个按钮,并写在文本字段中的String。

Manifext.xml:

 <?XML版本=1.0编码=UTF-8&GT?;

 <采用-SDK安卓的minSdkVersion =15/>
<使用许可权的android:NAME =android.permission.INTERNET对/><应用
    机器人:图标=@绘制/ ic_launcher
    机器人:标签=@字符串/ APP_NAME>
    <活动
        机器人:名字=。AndroidClientActivity
        机器人:标签=@字符串/ APP_NAME>
        &所述;意图滤光器>
            <作用机器人:名字=android.intent.action.MAIN/>            <类机器人:名字=android.intent.category.LAUNCHER/>
        &所述; /意图滤光器>
    < /活性GT;
< /用途>

main.xml中:

 <?XML版本=1.0编码=UTF-8&GT?;

 <的EditText
    机器人:ID =@ + ID / editText1
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT
    安卓的inputType =TEXT>    < requestFocus的/>
< /&的EditText GT;<按钮
    机器人:ID =@ + ID /按钮1
    机器人:layout_width =WRAP_CONTENT
    机器人:layout_height =WRAP_CONTENT
    安卓的onClick =myClickHandler
    机器人:文字=按钮/>
< / LinearLayout中>

的strings.xml:

 <?XML版本=1.0编码=UTF-8&GT?;

 <字符串名称=你好>的Hello World,AndroidClientActivity<!/串>
<字符串名称=APP_NAME> AndroidClient< /串>
<字符串名称=按钮>消息< /串>
<字符串名称=myClickHandler> myClickHandler< /串>

AndroidClientActivity.class:

 包com.maze.client;进口javax.ws.rs.core.MediaType;进口android.app.Activity;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.EditText;进口com.sun.jersey.api.client.Client;
进口com.sun.jersey.api.client.WebResource;公共类AndroidClientActivity延伸活动{私人的EditText文本;/ **当第一次创建活动调用。 * /
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);
    文字=(EditText上)findViewById(R.id.editText1);
}公共无效myClickHandler(查看视图){
    开关(view.getId()){
    案例R.id.button1:        WebResource WBR;
        Client客户端= Client.create();
        WBR = client.resource(HTTP://my.ip.address:8080 / MazeService / REST /服务/你好);
        字符串结果= wbr.queryParam(数字,10)接受(MediaType.APPLICATION_JSON)获得(为String.class)。
            text.setText(结果);
        打破;
    }}

}

这是行不通的。我得到的LogCat中此错误(请帮我编辑右):

  02-08 23:39:04.423:E / AndroidRuntime(660):致命异常:主要
02-08 23:39:04.423:E / AndroidRuntime(660):java.lang.IllegalStateException:无法执行活动的方法
02-08 23:39:04.423:E / AndroidRuntime(660):在android.view.View $ 1.onClick(View.java:3044)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.view.View.performClick(View.java:3511)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.view.View $ PerformClick.run(View.java:14105)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.os.Handler.handleCallback(Handler.java:605)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.os.Handler.dispatchMessage(Handler.java:92)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.os.Looper.loop(Looper.java:137)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.app.ActivityThread.main(ActivityThread.java:4424)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.lang.reflect.Method.invokeNative(本机方法)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.lang.reflect.Method.invoke(Method.java:511)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-08 23:39:04.423:E / AndroidRuntime(660):在dalvik.system.NativeStart.main(本机方法)
02-08 23:39:04.423:E / AndroidRuntime(660):由:java.lang.reflect.InvocationTargetException
02-08 23:39:04.423:E / AndroidRuntime(660):在java.lang.reflect.Method.invokeNative(本机方法)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.lang.reflect.Method.invoke(Method.java:511)
02-08 23:39:04.423:E / AndroidRuntime(660):在android.view.View $ 1.onClick(View.java:3039)
02-08 23:39:04.423:E / AndroidRuntime(660):11 ...更多
02-08 23:39:04.423:E / AndroidRuntime(660):com.sun.jersey.api.client.ClientHandlerException:产生的原因android.os.NetworkOnMainThreadException
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.api.client.Client.handle(Client.java:648)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:74)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.api.client.WebResource $ Builder.get(WebResource.java:503)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.maze.client.AndroidClientActivity.myClickHandler(AndroidClientActivity.java:32)
02-08 23:39:04.423:E / AndroidRuntime(660):14 ...更多
02-08 23:39:04.423:E / AndroidRuntime(660):由:android.os.NetworkOnMainThreadException
02-08 23:39:04.423:E / AndroidRuntime(660):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.io.IoBridge.connectErrno(IoBridge.java:127)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.io.IoBridge.connect(IoBridge.java:112)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
02-08 23:39:04.423:E / AndroidRuntime(660):在java.net.Socket.connect(Socket.java:842)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpConnection<&初始化GT;(HttpConnection.java:77)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpConnection<&初始化GT;(HttpConnection.java:50)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpConnection $ Address.connect(HttpConnection.java:351)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
02-08 23:39:04.423:E / AndroidRuntime(660):在libcore.net.http.HttpURLConnectionImpl.getResponse code(HttpURLConnectionImpl.java:479)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:240)
02-08 23:39:04.423:E / AndroidRuntime(660):在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
02-08 23:39:04.423:E / AndroidRuntime(660):19 ...更多
02-08 23:39:08.343:I /流程(660):发送信号。 PID:660 SIG:9


解决方案

在堆栈跟踪埋在致:com.sun.jersey.api.client.ClientHandlerException:android.os.NetworkOnMainThreadException 在Android 3.x和起来,你不能这样做在主线程网络I / O(这是你想要做什么)。你会想要做与的AsyncTask 网络请求。

I am new to Android. What I am trying to do is to get a String via a web service when I press a button and write the String in a text field.

Manifext.xml:

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".AndroidClientActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

main.xml:

<?xml version="1.0" encoding="utf-8"?>

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="myClickHandler"
    android:text="Button" />
</LinearLayout>

strings.xml:

<?xml version="1.0" encoding="utf-8"?>

<string name="hello">Hello World, AndroidClientActivity!</string>
<string name="app_name">AndroidClient</string>
<string name="button">Message</string>
<string name="myClickHandler">myClickHandler</string>

AndroidClientActivity.class:

package com.maze.client;

import javax.ws.rs.core.MediaType;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

public class AndroidClientActivity extends Activity {

private EditText text;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    text = (EditText) findViewById(R.id.editText1);
}

public void myClickHandler(View view){
    switch (view.getId()) {
    case R.id.button1:

        WebResource wbr;
        Client client = Client.create();
        wbr = client.resource("http://my.ip.address:8080/MazeService/rest/service/hello");  
        String result = wbr.queryParam("number", "10").accept(MediaType.APPLICATION_JSON).get(String.class);
            text.setText(result);
        break;
    }

}

}

This doesn't work. I get this error in the LogCat(please help me edit it right):

02-08 23:39:04.423: E/AndroidRuntime(660): FATAL EXCEPTION: main
02-08 23:39:04.423: E/AndroidRuntime(660): java.lang.IllegalStateException: Could not execute method of the activity
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.view.View$1.onClick(View.java:3044)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.view.View.performClick(View.java:3511)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.view.View$PerformClick.run(View.java:14105)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.os.Handler.handleCallback(Handler.java:605)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.os.Handler.dispatchMessage(Handler.java:92)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.os.Looper.loop(Looper.java:137)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.app.ActivityThread.main(ActivityThread.java:4424)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.lang.reflect.Method.invokeNative(Native Method)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.lang.reflect.Method.invoke(Method.java:511)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-08 23:39:04.423: E/AndroidRuntime(660):  at dalvik.system.NativeStart.main(Native Method)
02-08 23:39:04.423: E/AndroidRuntime(660): Caused by: java.lang.reflect.InvocationTargetException
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.lang.reflect.Method.invokeNative(Native Method)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.lang.reflect.Method.invoke(Method.java:511)
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.view.View$1.onClick(View.java:3039)
02-08 23:39:04.423: E/AndroidRuntime(660):  ... 11 more
02-08 23:39:04.423: E/AndroidRuntime(660): Caused by: com.sun.jersey.api.client.ClientHandlerException: android.os.NetworkOnMainThreadException
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.api.client.Client.handle(Client.java:648)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.maze.client.AndroidClientActivity.myClickHandler(AndroidClientActivity.java:32)
02-08 23:39:04.423: E/AndroidRuntime(660):  ... 14 more
02-08 23:39:04.423: E/AndroidRuntime(660): Caused by: android.os.NetworkOnMainThreadException
02-08 23:39:04.423: E/AndroidRuntime(660):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.io.IoBridge.connect(IoBridge.java:112)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
02-08 23:39:04.423: E/AndroidRuntime(660):  at java.net.Socket.connect(Socket.java:842)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:77)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
02-08 23:39:04.423: E/AndroidRuntime(660):  at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:240)
02-08 23:39:04.423: E/AndroidRuntime(660):  at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
02-08 23:39:04.423: E/AndroidRuntime(660):  ... 19 more
02-08 23:39:08.343: I/Process(660): Sending signal. PID: 660 SIG: 9

解决方案

Buried in the stack trace is Caused by: com.sun.jersey.api.client.ClientHandlerException: android.os.NetworkOnMainThreadException on Android 3.x and up, you can't do network I/O on the main thread (which is what you're trying to do). You'll want to do the network request with an AsyncTask.

这篇关于Android的IllegalStateException异常:无法执行活动的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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