0

2 番目のアクティビティとして起動される次のコードがあります。

public class SensorActivity extends Activity implements SensorEventListener{

List<Sensor> sensors;
Sensor selectedSens;
SensorManager SensMng;
ArrayAdapter<String> adapter;

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sensor);

    final ListView listSensors = (ListView) findViewById(R.id.listvalues);


    SensMng = (SensorManager) getSystemService(SENSOR_SERVICE);
    sensors = SensMng.getSensorList(Sensor.TYPE_ALL);
    ArrayAdapter<Sensor> adapter = new ArrayAdapter<Sensor>(this, android.R.layout.simple_list_item_1, sensors);
    listSensors.setAdapter(adapter);



}

ここに私のXMLファイルがあります:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listvalues"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

nullpointer 例外が発生し続けます。

10-03 21:46:57.475: E/AndroidRuntime(9893): FATAL EXCEPTION: main
10-03 21:46:57.475: E/AndroidRuntime(9893): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ch.ethz.inf.vs.android.spurra.sensors/ch.ethz.inf.vs.android.spurra.sensors.SensorActivity}: java.lang.NullPointerException
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2024)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.os.Looper.loop(Looper.java:137)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread.main(ActivityThread.java:4898)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at java.lang.reflect.Method.invokeNative(Native Method)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at java.lang.reflect.Method.invoke(Method.java:511)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at dalvik.system.NativeStart.main(Native Method)
10-03 21:46:57.475: E/AndroidRuntime(9893): **Caused by**: java.lang.NullPointerException
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.Activity.findViewById(Activity.java:1882)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at ch.ethz.inf.vs.android.spurra.sensors.SensorActivity.<init>(SensorActivity.java:24)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at java.lang.Class.newInstanceImpl(Native Method)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at java.lang.Class.newInstance(Class.java:1319)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.Instrumentation.newActivity(Instrumentation.java:1057)
10-03 21:46:57.475: E/AndroidRuntime(9893):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2015)
10-03 21:46:57.475: E/AndroidRuntime(9893):     ... 11 more

私が実際に行ったのは、メインのアクティビティからコピーして、値を調整しただけです。メインのアクティビティは問題なく動作しますが、これは問題ありません。プロジェクトのクリーニング、再構築を試みましたが、役に立ちませんでした。

誰が何が悪いのか教えてもらえますか?

ありがとうございます。それでは、お元気で

4

2 に答える 2

1

「 final ListView listVals = (ListView) findViewById(R.id.listvalues);」と宣言しました。フィールドとして、 setContentView() を実行する前に。実際の関数に移動すると、機能しました。それで、それがnullを返す原因だったと思いますか?

はい。呼び出すfindViewById(R.id.someId);前に呼び出すsetContentView(R.layout.someLayout);と、見つけようとしているを含む をreturn nullまだ膨らませていないため、そうなります。layoutView id

基本的に、あなたはあなたViewsの中に存在するので、 (通常は で)膨らませる前layoutに使用しようとすると、何も見つかりません。そのため、関数を呼び出すときのように使用しようとすると取得されます。findViwById()layoutsetContentView()NPE

于 2013-10-03T20:54:34.693 に答える
0

プロジェクトに外部 jar ファイルがある場合は、[プロジェクト] -> [プロパティ] -> [順序とエクスポート] に移動し、すべての外部 jar ファイルを選択します。それは仕事をするはずです。

于 2013-10-03T20:11:12.077 に答える