Null-Zeiger-Ausnahme in alert Dialog-generator
In dieser Methode, die ich verwendet, um zu rufen AlertDialog Box . Aber wenn ich rufen Sie den alert-Dialog. Ich bekomme immer die Fetale Ausnahme . Unten ist der Fehler, ich habe im alert Dialog-generator . Helfen Sie mir, finden Sie bitte .
12-18 04:25:10.222: E/AndroidRuntime(4173): FATAL EXCEPTION: main
12-18 04:25:10.222: E/AndroidRuntime(4173): Process: com.androidexample.customlistview, PID: 4173
12-18 04:25:10.222: E/AndroidRuntime(4173): java.lang.NullPointerException
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.app.AlertDialog.resolveDialogTheme (AlertDialog.java:143)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.app.AlertDialog$Builder.<init>(AlertDialog.java:360)
12-18 04:25:10.222: E/AndroidRuntime(4173): at com.androidexample.customlistview.CustomListViewAndroidExample.updateData (CustomListViewAndroidExample.java:162)
12-18 04:25:10.222: E/AndroidRuntime(4173): at com.androidexample.customlistview.CustomAdapter$1.onClick(CustomAdapter.java:144)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.view.View.performClick(View.java:4424)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.view.View$PerformClick.run(View.java:18383)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.os.Handler.handleCallback(Handler.java:733)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.os.Handler.dispatchMessage(Handler.java:95)
12-18 04:25:10.222: E/AndroidRuntime(4173): at android.os.Looper.loop(Looper.java:137) 12-18 04:25:10.222: E/AndroidRuntime(4173): at android.app.ActivityThread.main(ActivityThread.java:4998)
12-18 04:25:10.222: E/AndroidRuntime(4173): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 04:25:10.222: E/AndroidRuntime(4173): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 04:25:10.222: E/AndroidRuntime(4173): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-18 04:25:10.222: E/AndroidRuntime(4173): at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:593)
12-18 04:25:10.222: E/AndroidRuntime(4173): at dalvik.system.NativeStart.main(Native Method)
Hier ist der Code :
package com.androidexample.customlistview;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.ListView;
import android.widget.TextView;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
public class CustomListViewAndroidExample extends Activity {
ListView list;
CustomAdapter adapter;
String response = null;
TextView txt_Date ;
TextView txt_Location;
static String teamID;
static String startTime ;
public CustomListViewAndroidExample CustomListView = null;
public ArrayList<String> userIDArr = new ArrayList<String>();
public ArrayList<ListModel> CustomListViewArr = new ArrayList<ListModel>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomListView = this;
txt_Date = (TextView) findViewById(R.id.txt_date);
txt_Location = (TextView) findViewById(R.id.txt_location);
Intent intent= getIntent();
startTime = intent.getStringExtra("startTime");
txt_Location.setText(intent.getStringExtra("location"));
teamID = intent.getStringExtra("teamID");
txt_Date.setText(startTime);
setListData();
Resources res =getResources();
list=(ListView)findViewById(R.id.participationList);
adapter=new CustomAdapter(CustomListView, CustomListViewArr,res,userIDArr);
list.setAdapter(adapter);
}
public void setListData()
{
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
String userName = null;
int memberStatus = 0;
JSONArray memberData=null;
int entry = 0;
JSONObject jArray = null;
String userID = null;
String photo = null;
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("teamID",teamID));
postParameters.add(new BasicNameValuePair("startTime","2013-09-18 10:00:00"));
try {
response = CustomHttpClient.executeHttpPost(
"http://10.0.2.2/football365/sankashaList.php",
postParameters);
jArray = new JSONObject(response.toString());
memberData=jArray.getJSONArray("memberdata");
for(int i = 0 ; i < memberData.length(); i++){
userName = (memberData.getJSONObject(i).getString("name").toString()+"\t");
memberStatus = Integer.parseInt(memberData.getJSONObject(i).getString("memberStatus").toString());
entry = Integer.parseInt(memberData.getJSONObject(i).getString("entry").toString());
photo = (memberData.getJSONObject(i).getString("photo").toString());
userID = (memberData.getJSONObject(i).getString("userID").toString());
Log.i("photo", photo);
userIDArr.add(i, userID);
ListModel sched = new ListModel();
sched.setMemberName(userName);
sched.setMemberStatus(memberStatus);
if(photo.equals("") || photo.equals(null))
{
sched.setImage("upload.png");
}
else{
sched.setImage(photo);
}
sched.setEntry(entry);
sched.setUserID(userID);
CustomListViewArr.add(sched);
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
catch (Exception e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
Log.i("AVCE", userName+"");
Log.i("AVCE", memberStatus+"");
}
@SuppressWarnings("deprecation")
public void updateData(String userID,String entry) {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
String response = null;
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("teamID",teamID));
postParameters.add(new BasicNameValuePair("startTime",startTime));
postParameters.add(new BasicNameValuePair("entry", entry));
postParameters.add(new BasicNameValuePair("userID", userID));
try {
response = CustomHttpClient.executeHttpPost("http://10.0.2.2/football365/scheduleupdateflagentry.php",
postParameters);
}
catch (Exception e) {
e.printStackTrace();
}
if(CustomHttpClient.response.getStatusLine().getStatusCode() == 400){
if(response.toString().trim().equals("Insert Fail")){
AlertDialog.Builder alert = new AlertDialog.Builder(CustomListViewAndroidExample.this);
alert.setTitle("Error Logging in");
alert.setMessage("Insert Fail");
alert.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//TODO Auto-generated method stub
}
});
alert.show();
}
}
Log.i("response", response);
}
}
- Linie Nummer 162 ?
- die eine ist der einsame 162 ?
- AlertDialog.Builder alert = new AlertDialog.Builder(this); . dies ist Zeile 162
- versuchen CustomListViewAndroidExample.diese oder getparent()
- wo hast du den code in Aktivität fragment??
- Raghunandan >> ich verstehe nicht, was du meinst 🙁
- Was ist
CustomHttpClient
? Welche Klasse hat es zu verlängern? - hat u versuchen getParent()
- ja . @ Rohit . Nicht jeder Unterschied
- CustomHttpClient , dies ist die Klasse, die ich verwendet, um Daten zu extrahieren von Daten mit Hilfe von php .
- Gut...aber was Klasse hat es zu verlängern? Es ist nicht eine native Android-Klasse.
- wenn Sie die code-fragment, das wird nicht funktionieren, müssen Sie
getActivtiy
. Wenn die activity-Klasse verwenden, ActivityName.diese. Das ist es, was ich meinte. Das ist, warum ich fragte, wo hast du den code - Sorry für meine falsche . Dass die Klasse nicht reicht, nichts . 🙂
- dann müssen Sie gehen, die Aktivität, den Kontext, die Klasse und verwenden das gleiche dort.
- Activity-Klasse und ich alreayd verwendet activityName.diese. Aber das gleiche Ergebnis, das ich bekam . @ Roghunandan
- pls klar sein. Sie sagte, es erstreckt sich nicht alles. Jetzt sagt Ihr eine activity-Klasse. kannst du den ganzen code pls
- Sry mein falsch . Ich sagte CustomHttpClient reicht nichts an @ Squonk .
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses problem tritt auf, Eure verschiedenen Kontext Parameter.
Wenn Ihre Tätigkeit erstreckt sich mit Aktivität dann verwenden
Wenn Ihre Tätigkeit erstreckt sich mit FragmentActivity dann verwenden
Wenn Sie Fragment dann pass getActivity().
EDIT:
Schreiben endlich
fragmentContext
wird dynamisch erstellt, indemContext fragmentContext =getActivity();
**If your Activity extends with FragmentActivity then use** AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
ist falsch, es ist nur Aktivität.dieseÄndern
in
Ändern Sie den AlertDialog als
Nennen Sie es Wie als
ändern Sie Ihren code wie diesen....
Scheint es, dass Sie anrufen
updateData()
- Methode auf die Schaltfläche klicken.Wenn ich richtig bin dann verwenden Sie wie folgt: