1

エラーアクティビティを開始できませんComponentInfo:java.lang.IllegalStateException:onCreate()より前のアクティビティでシステムサービスを使用できません

コードを分離し、ヘルパークラスを使用することを試みています。(さまざまなJavaファイルを作成しました)マニフェストに登録されているアクティビティJavaファイルを作成しましたが、次のクラス(Javaファイル)を登録しませんでした。

import android.app.Activity;
import android.location.LocationManager;
import android.net.ConnectivityManager;
....


public class DeviceMonitor extends Activity {

    boolean laag=false;
    int level=-1;
    double batterylevel=-1;


    public boolean GPSEnabled() {

    final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if ( !manager.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) { // NO GPS ENABLED
        //ErrorMessage.append(R.string.enablegps);
        //ErrorMessage.append("\n");
        Log.d("StartPrepare","GPS DISABLED");
        return false;
                    } else {
        Log.d("StartPrepare","GPS ENABLED");
        return true;
                    }
    }

OnCreate()メソッドを削除しましたが、これは正しいですか?マニフェストに登録する必要がありますか?はいの場合、どのように登録しますか?

登録されたアクティビティから次のように呼び出しているときに、次のエラーが発生しました。

DeviceMonitor MyDevice = new DeviceMonitor();
if (MyDevice.GPSEnabled()){gpsenabled=true;}else{gpsenabled=false;fout=true;}

エラー:

E / AndroidRuntime(1912):java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {package}:java.lang.IllegalStateException:onCreate()より前のアクティビティでシステムサービスを使用できません

ヘルパークラス(私はJava / Androidの初心者です)について少し説明してくれて、エラーが何を引き起こす可能性があるかについての手がかりを持っている人はいますか?OnCreate()メソッドを追加しようとしましたが、役に立ちませんでした。

どうもありがとう!

4

2 に答える 2

1

こんなことしないで...

DeviceMonitor MyDevice = new DeviceMonitor();

DeviceMonitor拡張Activityします。usingのインスタンスを作成しないでActivityくださいnew。AndroidActivityは特殊なケースのクラスであり、通常のJavaクラスのように扱うべきではありません。

開始する場合は、または他の「start」メソッドの1つを使用して開始するActivity必要があります。startActivity...)

'helper'クラスが必要な場合は、何も拡張しない標準のJavaクラスを作成するだけです。メインからインスタンスを作成するときは、コンストラクターでインスタンスをActivity渡し、Activity Contextそれを使用してAndroidサービスなどにアクセスします。例...

public class DeviceMonitor {

    Context mContext = null;

    public DeviceMonitor (Context context) {
        mContext = context;
    }
}

編集:あなたのヘルパーを作成し、Contextあなたのメインからを渡すには、これをActivity行います...

// An Activity IS a Context so pass 'this'
DeviceMonitor MyDevice = new DeviceMonitor(this);
于 2011-12-28T22:03:10.163 に答える
0

あなたはあなたを宣言する必要があります

boolean GPSEnabled 

onCreate()メソッドがクラスまたはサービスで呼び出された後。

于 2011-12-28T21:57:42.467 に答える