04-18 10:43:01.765: I/System.out(23278): MANUAL HOURS === 9:8
04-18 10:43:01.820: I/System.out(23278): ---GpsOnOff.detectGps()
04-18 10:43:01.835: D/AndroidRuntime(23278): Shutting down VM
04-18 10:43:01.835: W/dalvikvm(23278): threadid=1: thread exiting with uncaught exception (group=0x40018578)
04-18 10:43:01.851: E/AndroidRuntime(23278): FATAL EXCEPTION: main
04-18 10:43:01.851: E/AndroidRuntime(23278): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.security/com.example.security.Colect_data_from_usr_activity}: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40538820 is not valid; is your activity running?
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1491)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.example.security.StartInspection$3.onClick(StartInspection.java:72)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.View.performClick(View.java:2485)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.View$PerformClick.run(View.java:9080)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.os.Handler.handleCallback(Handler.java:587)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.os.Looper.loop(Looper.java:130)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.ActivityThread.main(ActivityThread.java:3687)
04-18 10:43:01.851: E/AndroidRuntime(23278): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 10:43:01.851: E/AndroidRuntime(23278): at java.lang.reflect.Method.invoke(Method.java:507)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-18 10:43:01.851: E/AndroidRuntime(23278): at dalvik.system.NativeStart.main(Native Method)
04-18 10:43:01.851: E/AndroidRuntime(23278): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40538820 is not valid; is your activity running?
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.ViewRoot.setView(ViewRoot.java:532)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.view.Window$LocalWindowManager.addView(Window.java:424)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.Dialog.show(Dialog.java:241)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.example.security.Colect_data_from_usr_activity.showGPSOnDialog(Colect_data_from_usr_activity.java:195)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.example.security.Colect_data_from_usr_activity.detectGps(Colect_data_from_usr_activity.java:172)
04-18 10:43:01.851: E/AndroidRuntime(23278): at com.example.security.Colect_data_from_usr_activity.onCreate(Colect_data_from_usr_activity.java:95)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-18 10:43:01.851: E/AndroidRuntime(23278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
04-18 10:43:01.851: E/AndroidRuntime(23278): ... 15 more
Colect_data_from_usr_activity.java
public class Colect_data_from_usr_activity extends Activity {
Dialog dialog;
Button cnf_exit,cnf_cancel;
private CheckBox chk1, chk2,chk3,chk4,chk5;
Button btn_sbmt;
String address="";
String adr1,adr2;
private int mYear;
private int mMonth;
private int mDay;
private TextView edt_date,edt_time,txt_location,edt_note,txt_buildingname;
private int mhour,mminute,msecond;
static final int TIME_DIALOG_ID = 1;
static final int DATE_DIALOG_ID = 0;
LocationManager loc_mgr ;
MyLocationListener location_listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.collect_data_frm_user_layout);
dialog = new Dialog(ActGroup.group);
dialog.setContentView(R.layout.confirmexit);
dialog.setTitle(Html.fromHtml("<font color='white'>Exit</font>"));
dialog.show();
cnf_exit=(Button) dialog.findViewById(R.id.cnf_exit);
cnf_cancel =(Button) dialog.findViewById(R.id.cnf_cancel);
cnf_exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
cnf_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
SimpleDateFormat date_format = new SimpleDateFormat("dd-MMM-yy");
SimpleDateFormat time_format = new SimpleDateFormat("HH:mm:ss a");
Date date = new Date();
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
loc_mgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
detectGps();
/* Bundle bundle = getIntent().getExtras();
String strloc = bundle.getString("lctn");
System.out.println("======>>>>" + strloc);
*/
addListenerOnChkIos();
addListenerOnButton();
txt_location = (TextView)findViewById(R.id.txt_location);
txt_location.setText(address);
txt_buildingname = (TextView)findViewById(R.id.textView_Building_name);
txt_buildingname.setText(Tracker.building_name);
edt_note = (TextView) findViewById(R.id.editText_note);
edt_date = (TextView) findViewById(R.id.txtvw_date);
Date d = new Date();
java.text.DateFormat df = android.text.format.DateFormat.getDateFormat(getApplicationContext());
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
edt_date.setText(date_format.format(date));
edt_time=(TextView) findViewById(R.id.editText_time);
edt_time.setText(time_format.format(date));
edt_date.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
mhour = c.get(Calendar.HOUR);
mminute = c.get(Calendar.MINUTE);
msecond = c.get(Calendar.SECOND);
}
private void updateDate() {
edt_date.setText(new StringBuilder()
.append(mDay).append("/")
.append(mMonth + 1).append("/")
.append(mYear).append(" "));
showDialog(DATE_DIALOG_ID);
}
//-------------------------------------------update time---------------------//
public void updatetime()
{
edt_time.setText(new StringBuilder()
.append(pad(mhour)).append(":")
.append(pad(mminute)));
}
private void detectGps() {
// TODO Auto-generated method stub
System.out.println("---GpsOnOff.detectGps()");
if(loc_mgr.isProviderEnabled(LocationManager.GPS_PROVIDER))
{
trackGPS();
}
else
{
showGPSOnDialog();
} }
public void showGPSOnDialog() {
// TODO Auto-generated method stub
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("GPS is disabled in your device. Would you like to enable it?")
.setCancelable(false)
.setPositiveButton("Settings",
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int id){
Intent callGPSSettingIntent = new Intent(
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(callGPSSettingIntent,55);
}
});
alertDialogBuilder.setNegativeButton("Cancel",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int id){
dialog.cancel();
}
});
AlertDialog alert = alertDialogBuilder.create();
alert.show();
}
protected void showLastKnownLocation() {
Location location = loc_mgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location == null) {
System.out.println("LOCATION GPS NULL");
location = loc_mgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
if(location!=null)
{
String message = String.format(
"Last Location \n Longitude: %1$s \n Latitude: %2$s",
location.getLongitude(), location.getLatitude()
);
System.out.println(message);
getAddress(location.getLatitude(),location.getLongitude());
}
else
{
System.out.println("LOCATION NULL");
}}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
detectGps();
}
public void trackGPS() {
// TODO Auto-generated method stub
showLastKnownLocation();
location_listener = new MyLocationListener();
loc_mgr.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,location_listener);
}
private void getAddress(double latitude,double longitude) {
// TODO Auto-generated method stub
try {
Geocoder geocoder = new Geocoder(Colect_data_from_usr_activity.this);
try {
List<Address> arr = geocoder.getFromLocation(latitude,longitude,1);
if(arr.size() !=0 && arr != null)
{
for (int i = 0; i < arr.get(0).getMaxAddressLineIndex(); i++) {
System.out.println("ADDRESSSS "+arr.get(0).getAddressLine(i));
if(i == 0)
{
adr1 = arr.get(0).getAddressLine(i);
}else if(i == 1)
{
adr2 = arr.get(0).getAddressLine(i);
}
address += arr.get(0).getAddressLine(i)+"\n";
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("--- GETADRES EXCEPTION");
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}}
public class MyLocationListener implements LocationListener
{
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if(location != null)
{
getAddress(location.getLatitude(), location.getLongitude());
}
else
{
System.out.println("--- location null;");
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
System.out.println("GpsOnOff.MyLocationListener.onProviderDisabled()");
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
System.out.println("GpsOnOff.MyLocationListener.onProviderEnabled()");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
System.out.println("GpsOnOff.MyLocationListener.onStatusChanged()");
}}
private void CheckEnableGPS(){
String provider = Settings.Secure.getString(getContentResolver(),
Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(provider.contains("gps")){
//GPS Enabled
System.out.println("PROVIDE -- "+provider);
// Toast.makeText(Start_hr_activity.this, "GPS Enabled: " + provider,
// Toast.LENGTH_LONG).show();
}else{
//Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
}
private static String pad(int c)
{
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
//Datepicker dialog generation
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
updateDate();
}
};
// Timepicker dialog generation
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mhour = hourOfDay;
mminute = minute;
updatetime();
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener, mYear, mMonth,mDay);
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mhour, mminute, false);
}
return null;
}
public void addListenerOnChkIos() {
chk1 = (CheckBox) findViewById(R.id.checkBox_windowopen);
chk1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {
}
}
});
}
public void addListenerOnButton() {
chk1 = (CheckBox) findViewById(R.id.checkBox_windowopen);
chk2 = (CheckBox) findViewById(R.id.checkBox_dooropen);
chk3 = (CheckBox) findViewById(R.id.checkBox_employeeonsite);
chk4 = (CheckBox) findViewById(R.id.checkBox_glassbroken);
chk5 = (CheckBox) findViewById(R.id.checkBox_doorbroken);
btn_sbmt = (Button) findViewById(R.id.button_sbmt);
btn_sbmt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str_1 = String.valueOf(chk1);
String str_2 = String.valueOf(chk2);
String str_3 = String.valueOf(chk3);
String str_4 = String.valueOf(chk4);
String str_5 = String.valueOf(chk5);
String str_dt = edt_date.getText().toString();
String str_tm = edt_time.getText().toString();
System.out.println("********_--------________--- "+ str_tm);
String str_loct = txt_location.getText().toString();
str_loct.valueOf(txt_location.getText().toString());
String str_note = edt_note.getText().toString();
String incidents="";
if(chk1.isChecked())
{
incidents += chk1.getText().toString()+"\n";
}
if(chk2.isChecked())
{
incidents += chk2.getText().toString()+"\n";
}
if(chk3.isChecked())
{
incidents += chk3.getText().toString()+"\n";
}
if(chk4.isChecked())
{
incidents += chk4.getText().toString()+"\n";
}
if(chk5.isChecked())
{
incidents += chk5.getText().toString()+"\n";
}
Bundle b=new Bundle();
b.putString("c1", incidents);
b.putString("date", str_dt);
b.putString("time", str_tm);
b.putString("lctn",str_loct);
b.putString("note", str_note);
b.putString("adr1", adr1);
b.putString("adr2", adr2);
loc_mgr.removeUpdates(location_listener);
Intent intnt = new Intent(v.getContext(), Colected_data_result_activity.class);
intnt.putExtras(b);
View view = ActGroup.group.getLocalActivityManager().startActivity("Colected_data_result_activity", intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
ActGroup.group.replaceView(view);
// Toast.makeText(Report.this, result.toString(),Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
dialog.show();
}
}
最新的Logcat
04-18 11:49:34.414: D/AndroidRuntime(27731): Shutting down VM
04-18 11:49:34.414: W/dalvikvm(27731): threadid=1: thread exiting with uncaught exception (group=0x40018578)
04-18 11:49:34.453: E/AndroidRuntime(27731): FATAL EXCEPTION: main
04-18 11:49:34.453: E/AndroidRuntime(27731): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.security/com.example.security.Colect_data_from_usr_activity}: java.lang.NullPointerException
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1491)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
04-18 11:49:34.453: E/AndroidRuntime(27731): at com.example.security.StartInspection$3.onClick(StartInspection.java:72)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.view.View.performClick(View.java:2485)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.view.View$PerformClick.run(View.java:9080)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.os.Handler.handleCallback(Handler.java:587)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.os.Looper.loop(Looper.java:130)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.ActivityThread.main(ActivityThread.java:3687)
04-18 11:49:34.453: E/AndroidRuntime(27731): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 11:49:34.453: E/AndroidRuntime(27731): at java.lang.reflect.Method.invoke(Method.java:507)
04-18 11:49:34.453: E/AndroidRuntime(27731): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-18 11:49:34.453: E/AndroidRuntime(27731): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-18 11:49:34.453: E/AndroidRuntime(27731): at dalvik.system.NativeStart.main(Native Method)
04-18 11:49:34.453: E/AndroidRuntime(27731): Caused by: java.lang.NullPointerException
04-18 11:49:34.453: E/AndroidRuntime(27731): at com.example.security.Colect_data_from_usr_activity.detectGps(Colect_data_from_usr_activity.java:159)
04-18 11:49:34.453: E/AndroidRuntime(27731): at com.example.security.Colect_data_from_usr_activity.onCreate(Colect_data_from_usr_activity.java:66)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-18 11:49:34.453: E/AndroidRuntime(27731): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
04-18 11:49:34.453: E/AndroidRuntime(27731): ... 15 more
答案 0 :(得分:0)
您无法在onCreate
内显示对话框;这就是造成神秘异常的原因。该窗口尚未创建。将detectGps
调用(以及显示代码的其他对话框)移至onStart
,它应该有效。
实际上,您应该覆盖onCreateDialog
并使用showDialog
来显示对话框。这允许活动在活动生命周期事件期间正确管理对话框。
答案 1 :(得分:0)
根据日志,该异常是由于向未运行前台的活动添加了对话框。 在onCreate中,该对话框构造函数应该与当前运行活动的上下文一起传递。但是,根据上面的代码,具有activitygroup(ActGroup.group返回activitygroup)的对话构造函数作为参数而不是context。
如果您仍想使用ActGroup.group,那么该对话框构造函数应包含ActGroup.group.getCurrentActivity()。