[英]Unknown Class when using Volley Simple Request
我在追蹤Volley
這是我的代碼,但是由於某種原因,最后一行queue.add(stringRequest); 錯誤與未知類。
public class MainActivity extends ActionBarActivity {
final TextView mTextView = (TextView)findViewById(R.id.text);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
queue.add(stringRequest)
}
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://www.google.com";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextView.setText("Response is: " + response.substring(0, 500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didnt work!");
}
});
}
您知道為什么會出錯嗎?
下面是錯誤
Process: za.co.stillie.networktest, PID: 11113
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{za.co.stillie.networktest/za.co.stillie.networktest.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1884)
at za.co.stillie.networktest.MainActivity.<init>(MainActivity.java:25)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
上面的錯誤是當我嘗試在代碼中仍然存在該錯誤的情況下運行應用程序時得到的錯誤
注意:我將queue.add(stringRequest)移動到onCreate方法
似乎queue.add(stringRequest)
在MainActivity內部,但不在任何函數中。
只需將queue.add(stringRequest)
放在onCreate或將要調用的任何其他函數中。
Unknown Class
是因為Java將'queue.add(stringRequest)'視為變量,所以它不知道它屬於哪個類。 您沒有錯誤的堆棧跟蹤信息,因為Java不允許您運行此代碼。
您提供的網站並沒有列出所有代碼,只是列出了一個簡短的代碼。
我沒有足夠的聲譽來發表評論...那么,您是否要在清單上聲明此活動以及網絡許可?
我猜您應該在setContentView之后使用findViewById
。
final TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.text);
queue.add(stringRequest);
}
您不能在設置contentview之前啟動textview或任何視圖。
好的..我發現了錯誤...您首先將stringrequest添加到隊列中,然后啟動它...我已經更新了答案..檢查它。
public class MainActivity extends ActionBarActivity {
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://www.google.com";
//dont mean to do that...
//final TextView mTextView = (TextView)findViewById(R.id.text);
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.text);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTextView.setText("Response is: " + response.substring(0, 500));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
mTextView.setText("That didnt work!");
}
});
queue.add(stringRequest);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.