в применении иногда я получаю эту ошибку и после того, как след я не могу найти, Что причина этой ошибки:Android ComponentInfo и NullPointerException
java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.tsms/ir.tsms.ServiceDialog}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
at android.app.ActivityThread.access$600(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1340)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5297)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at ir.tsms.ServiceDialog.updateAndIntertDialog(ServiceDialog.java:233)
at ir.tsms.ServiceDialog.onCreate(ServiceDialog.java:105)
at android.app.Activity.performCreate(Activity.java:5122)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
... 11 more
java.lang.NullPointerException
at ir.tsms.ServiceDialog.updateAndIntertDialog(ServiceDialog.java:233)
at ir.tsms.ServiceDialog.onCreate(ServiceDialog.java:105)
я получаю NullPointerException
ошибку и я не могу решить, что.
мой код:
public class ServiceDialog extends Activity {
private Context ctx;
private String count;
private Boolean ps;
private Boolean sn;
private String mLastIDForDelete;
private String mLastID;
private String mSmsNumber;
private String mMobileNumber;
private String mContactName;
private String mSmsBody;
private String mSenderName;
private String mDate;
private MediaPlayer sms_music;
private PowerManager.WakeLock wakeLock;
private TextView count_sms;
private ContentResolver contentResolver;
private boolean getCurrentActivity;
private LinearLayout open_app;
private TextView content;
private TextView title;
private TextView tv_date_time;
private TextView tv_name_family;
private TextView te_sms_text;
private TextView tv_phone_number;
private LinearLayout main_window;
private Integer notify = 0;
private Integer unread_messages;
private Integer unread_count = 0;
private static final String TAG = "BroadcastTest";
private Intent intent;
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
requestWindowFeature (Window.FEATURE_NO_TITLE);
getWindow().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView (R.layout.service_view_dialog);
ctx = getBaseContext();
G.redirect = false;
/* Set current Activity runnable with this activity class */
G.activity = this;
intent = new Intent(this, ToobaPayamakService.class);
unread_messages = 0;
title = (TextView) findViewById (R.id.tv_title);
content = (TextView) findViewById (R.id.content);
count_sms = (TextView) findViewById (R.id.tv_count_new_sms);
tv_date_time = (TextView) findViewById (R.id.tv_date_time);
tv_name_family = (TextView) findViewById (R.id.tv_name_family);
tv_phone_number = (TextView) findViewById (R.id.tv_phone_number);
te_sms_text = (EditText) findViewById (R.id.te_sms_text);
title.setText (ctx.getResources().getString (R.string.count_new_sms_received));
main_window = (LinearLayout) findViewById (R.id.main_window);
int count = 0;
int unread= 0;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if (extras == null) {
count = 0;
} else {
G.config_username = extras.getString ("username");
G.config_password = extras.getString ("password");
unread = extras.getInt ("unread" );
notify = extras.getInt ("notify" );
G.db = new DatabaseHandler (G.context);
}
}
contentResolver = ctx.getContentResolver();
updateAndIntertDialog(unread, contentResolver);
notification();
Button send_sms = (Button) findViewById (R.id.send_sms);
open_app = (LinearLayout) findViewById (R.id.open_app);
LinearLayout delete = (LinearLayout) findViewById (R.id.delete);
LinearLayout forward = (LinearLayout) findViewById (R.id.forward);
/* get realtime configuration saved settings */
open_app.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick (View v) {
Intent tsms_dashboard = new Intent (v.getContext(), ActivityMain.class);
startActivity (tsms_dashboard);
finish();
}
});
delete.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick (View v) {
/*G.db.deleteRecordFromReceiveds(mLastIDForDelete);
if(getCurrentActivity){
G.fillItems (G.contentResolver);
G.adapter.notifyDataSetChanged();
}*/
}
});
forward.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick (View v) {
G.forward_text_from_service = mSmsBody;
G.config_smsNumber = tv_phone_number.getText().toString();
Intent tsms_dashboard = new Intent(v.getContext(), ActivityContactList.class);
startActivity(tsms_dashboard);
finish();
}
});
/* Set Screen Turn ON */
WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);
PowerManager powermanager = ((PowerManager)ctx.getSystemService(Context.POWER_SERVICE));
wakeLock=powermanager.newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "TsmsScreenOn");
wakeLock.acquire();
startService(intent);
registerReceiver(broadcastReceiver, new IntentFilter (ToobaPayamakService.BROADCAST_ACTION));
}
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateUI(intent);
}
};
private void updateUI(Intent intent) {
String counter = intent.getStringExtra ("counter");
Log.e ("counter in update UI", counter);
updateAndIntertDialog(Integer.valueOf (counter), contentResolver);
//count_sms.setText (counter);
//notification();
}
public void updateAndIntertDialog(Integer received_count , ContentResolver cr){
unread_messages += received_count;
getCurrentActivity = Configuration.getInstance()
.getBoolean (getApplication(),
Configuration.SharedPrefsTypes.ACTIVITY_IS_RUNNING);
int count = received_count - 1;
int cursor_count = 0;
String mUserID = "";
String mLastID = "";
String mSmsBody = "";
String mSenderName = "";
String mContactName = "";
String mSmsNumber = "";
String mDate = "";
Cursor c = G.db.getReceivedFromDatabaseByCount(G.config_username , received_count);
c.moveToLast();
if (c != null && c.getCount() != 0) {
cursor_count = c.getCount();
Log.e("cursor count is: ", c.getCount()+"");
for(int i = cursor_count; i > 0; i--){
mUserID = G.config_username;
mLastID = c.getString (c.getColumnIndex ("lastId"));
mSmsBody = c.getString (c.getColumnIndex ("smsBody"));
mSenderName = c.getString (c.getColumnIndex ("senderName"));
//Log.e("Fill Items "," mSenderName:" + mSenderName + " ContentResolver: "+cr);
mContactName = G.getContentNameFromContactList (mSenderName, cr);
if (TextUtils.isEmpty (mContactName))
/* if contact name not exist in contact show resolve by service */
mContactName = mSenderName;
mSmsNumber = c.getString (c.getColumnIndex ("smsNumber"));
mDate = c.getString (c.getColumnIndex ("receiveDate"));
Bitmap mPhoto = G.getContactPhoto (mSenderName, cr);
int mRead = Integer.parseInt (c.getString (c.getColumnIndex ("read_state")));
ReceivedItemStructure itm = new ReceivedItemStructure();
itm.setmLastID (mLastID);
itm.setmUserID (mUserID);
itm.setmSmsBody (mSmsBody);
itm.setmSmsNumber (mSmsNumber);
itm.setmSenderName (mSenderName);
itm.setmContactName (mContactName);
itm.setmDate (mDate);
itm.setmRead (mRead);
itm.setmPhoto (mPhoto);
Log.e ("---------- lastID: ", mLastID);
G.items.add (0, itm);
c.moveToPrevious();
}
}
c.close();
mLastIDForDelete = mLastID;
tv_name_family.setText (mContactName);
tv_phone_number.setText (mSmsNumber);
tv_date_time.setText (mDate.substring(11, 16));
mMobileNumber = G.getContactMobile (mContactName);
content.setText (mSmsBody);
count_sms.setText (unread_messages+"");
if(getCurrentActivity){
G.adapter.notifyDataSetChanged();
}
//main_window.setVisibility (View.VISIBLE);
try {
Thread.sleep (2000);
notification();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
линия 223 является конец updateAndIntertDialog
функции и ServiceDialog.java:105
звонит updateAndIntertDialog
функция
Если я получаю NPE, я распечатать каждый объект этой линии, которая может быть пустой ... попробуйте это путь. Просто System.out.println («Debug NPE:« + G + »» + адаптер), если строка 223 - G.adapter.notifyDataSetChanged(); – Wicked161089
Ваш 'G.adapter' равен нулю. –