【发布时间】:2013-02-20 23:37:23
【问题描述】:
每当我单击提交按钮时,我都会收到错误消息“不幸的是,应用程序已停止工作。”请你帮帮我。
代码-
public void onClick(View v) {
TextView t = (TextView) findViewById(R.id.textView4);
if(from == to)
{
Toast.makeText(getApplicationContext(), "Invalid", 4000).show();
}
else
{
try {
s = getJson("URL");
JSONObject jObj;
jObj = new JSONObject(s);
String exResult = jObj.getJSONObject("query").getJSONObject("results").getJSONObject("rate").getString("Rate");
t.setText(exResult);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
LogCat -
03-15 12:06:17.508: E/AndroidRuntime(877): 致命异常: main 03-15 12:06:17.508: E/AndroidRuntime(877): android.os.NetworkOnMainThreadException 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 java.net.InetAddress.lookupHostByName(InetAddress.java:385) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 java.net.InetAddress.getAllByName(InetAddress.java:214) 03-15 12:06:17.508: E/AndroidRuntime(877): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 03-15 12:06:17.508: E/AndroidRuntime(877): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 03-15 12:06:17.508: E/AndroidRuntime(877): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 03-15 12:06:17.508: E/AndroidRuntime(877): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 myandroid.myfirstmodule.sconverter.getJson(sconverter.java:163) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 myandroid.myfirstmodule.sconverter$1.onClick(sconverter.java:96) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.view.View.performClick(View.java:4084) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.view.View$PerformClick.run(View.java:16966) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.os.Handler.handleCallback(Handler.java:615) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.os.Handler.dispatchMessage(Handler.java:92) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.os.Looper.loop(Looper.java:137) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 android.app.ActivityThread.main(ActivityThread.java:4745) 03-15 12:06:17.508: E/AndroidRuntime(877): at java.lang.reflect.Method.invokeNative(Native Method) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 java.lang.reflect.Method.invoke(Method.java:511) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 03-15 12:06:17.508: E/AndroidRuntime(877): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 03-15 12:06:17.508: E/AndroidRuntime(877): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
点击第二个按钮有什么问题?
-
我不认为将 submitfinal 的 onClick 放在按钮 b 的 onCLick 内是正确的做法。为什么需要这样做?
-
你想达到什么目的...?
-
当我点击第二个按钮时,我会自动移动到上一页。
-
ok..我首先使用 yahoo api 获取数据(第一次点击时..效果很好),然后处理该数据以将其与用户在文本框中输入的文本相乘(通过点击第二个按钮...自动移到上一页)