0

エラーが発生する理由を説明してください。

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.project/com.project.Deals}: java.lang.IllegalStateException: System services not available to Activities before onCreate() 

以下の2つのクラスを使用しているときは、これを何年も前から行っています。助けてくれてありがとう

public class Deals extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textview = new TextView(this);
        textview.setText("This is the Artists tab");
        setContentView(textview);

        NetworkConnection nc = new NetworkConnection();
        boolean networkAvail = nc.isNetworkConnAvail();
        if (networkAvail == true){
        }

    }
};

public class NetworkConnection extends Activity {
/** Called when the activity is first created. */

public boolean isNetworkConnAvail() {

        ConnectivityManager connMgr = (ConnectivityManager) 
            getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null)
            return networkInfo.isConnected();

        return false;
    }
}
4

2 に答える 2

1

これをマニフェストに追加します。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

そしてこれを削除します:

extends Activity

class NetworkConnection

アップデート

コードを次のように変更することをお勧めします。

public class Deals extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

boolean networkAvail = isNetworkConnAvail();
if (networkAvail == true){
  //do something
}

}

public boolean isNetworkConnAvail() {

ConnectivityManager connMgr = (ConnectivityManager) 
    getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null)
    return networkInfo.isConnected();

return false;
}

}

`

于 2012-05-19T22:25:07.687 に答える
1

問題は、onCreateを呼び出さないNetworkConnectionクラスにあり、代わりにこれを試してください。

public boolean isNetworkConnAvail(Context context) {

    ConnectivityManager connMgr = (ConnectivityManager) 
        context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
    if (networkInfo != null)
        return networkInfo.isConnected();

    return false;
}

そして、あなたの他のクラスからこのようにそれを呼んでください:

nc.isNetworkConnAvail(this);

または、NetworkConnectionのコンストラクターでスーパークラスのonCreateメソッドを呼び出します。getSystemServiceを使用できるようにするためにActivityを拡張するだけの場合は、Activityを拡張せずに、コンストラクターまたはメソッド自体のいずれかでコンテキストを渡すこともできます。これにより、これらのメソッドにアクセスできるようになります。 )。

于 2012-05-19T22:30:39.550 に答える