无法运行应用程序安卓 java。lang.NullPointerException
几天前我开始学习Android,我一直在开发这个应用程序,它基本上是通过截取连接到API,但当我尝试在智能手机上运行该应用程序时,我遇到以下错误:
-25 10:17:46.851 24476-24476/com.representemais E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.rep, PID: 24476
java.lang.NullPointerException
at com.rep.app.principal.InicioActivity$AutenticacaoLocalTask$1.onResponse(InicioActivity.java:89)
at com.representemais.app.principal.InicioActivity$AutenticacaoLocalTask$1.onResponse(InicioActivity.java:84)
at com.安卓.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
at com.安卓.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at 安卓.os.Handler.handleCallback(Handler.java:733)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:136)
at 安卓.app.ActivityThread.main(ActivityThread.java:5102)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
这是一项令人厌恶的活动:
package com.rep.app.principal;
import 安卓.os.AsyncTask;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.view.View;
import 安卓.widget.TextView;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.安卓.volley.AuthFailureError;
import com.安卓.volley.Request;
import com.安卓.volley.RequestQueue;
import com.安卓.volley.Response;
import com.安卓.volley.VolleyError;
import com.安卓.volley.VolleyLog;
import com.安卓.volley.toolbox.JsonObjectRequest;
import com.安卓.volley.toolbox.Volley;
import com.rep.R;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class InicioActivity extends SherlockFragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AutenticacaoLocalTask mAutenticacaoLocalTask = new AutenticacaoLocalTask();
mAutenticacaoLocalTask.execute((Void) null);
}
private TextView txtDisplay;
RequestQueue queue = Volley.newRequestQueue(this);
public class AutenticacaoLocalTask extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
try {
txtDisplay = (TextView) findViewById(R.id.txtDisplay);
String url = "http://192.168.1.15/rep-api/api/clients";
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
txtDisplay.setText("Response => "+response.toString());
findViewById(R.id.progressBar1).setVisibility(View.GONE);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error: " + error.getMessage());
}
})
{
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("X-API-TOKEN", "99KI9Gj68CgCf70deM22Ka64chef2C40Gm2lFJ2J0G9JkD0bDAcbFfd19MfacGf3FFm8CM1hG0eDiIk8");
return headers;
}
};
queue.add(jsonObjReq);
return true;
} catch (Exception e) {
Log.e("RM", e.getMessage());
return false;
}
}
@Override
protected void onPostExecute(final Boolean success) {
}
@Override
protected void onCancelled() {
}
}
以及舱单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
package="com.rep"
安卓:versionCode="1"
安卓:versionName="1.0">
<uses-sdk
安卓:minSdkVersion="7"
安卓:targetSdkVersion="19" />
<uses-permission 安卓:name="安卓.permission.INTERNET"></uses-permission>
<uses-permission 安卓:name="安卓.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission 安卓:name="安卓.permission.ACCESS_WIFI_STATE"></uses-permission>
<application
安卓:allowBackup="true"
安卓:icon="@drawable/ic_launcher"
安卓:label="@string/app_name"
安卓:theme="@style/AppTheme">
<activity
安卓:name=".app.principal.InicioActivity"
安卓:label="@string/app_name">
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
安卓:name=".app.login.LoginActivity"
安卓:configChanges="keyboardHidden"
安卓:label="@string/app_name">
</activity>
<activity
安卓:name=".app.principal.MainActivity"
安卓:label="@string/app_name"></activity>
<activity 安卓:name=".app.cliente.ClienteDetalheActivity"
安卓:label="@string/app_name"></activity>
<activity 安卓:name=".app.login.LoginTelaBloqueada"
安卓:label="@string/app_name"></activity>
</application>
</manifest>
# 1 楼答案
我想你忘了
您应该在
onCreate(...)
方法中设置布局,然后引用TextView
正确:
# 2 楼答案
快速一看,您似乎没有设置内容视图,这将导致
findViewById
返回null
。试图在不存在的TextView
中设置文本似乎是崩溃的直接原因