0

私はAndroidアプリの開発に非常に慣れていません..エミュレーターでプログラムを実行すると強制終了します..nullpointerexceptionを設定する必要があることがわかりましたが、それらをどこに設定すればよいかわかりません..plsは私を助けてくれます.

public class SampleActivity extends Activity {

TextView dp_octet1, dp_octet2, dp_octet3, dp_octet4, dp_slashes;
int i = 0;
int j = 0;
int octet[];

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample);
    iniTextView();
    generatingRandomIpAddress();
}

private void generatingRandomIpAddress() {


   Random i = new Random();           //Random number between 0-2
   if(i.nextInt(3)==0){
       octet[0] = 8+(i.nextInt(22));
       octet[1] = 1+(i.nextInt(126));
   }
   if(i.nextInt(3)==1){
       octet[0] = 16+(i.nextInt(14));
       octet[1] = 128+(i.nextInt(63));
   }
   if(i.nextInt(3)==2){
       octet[0] = 24+(i.nextInt(6));
       octet[1] = 192+(i.nextInt(31));
   }
   octet[2] = (i.nextInt(255));
   octet[3] = (i.nextInt(255));
   octet[4] = (i.nextInt(255));

   //Display the problem
   dp_slashes.setText(octet[0]);
   dp_octet1.setText(octet[1]);
   dp_octet2.setText(octet[2]);
   dp_octet3.setText(octet[3]);
   dp_octet4.setText(octet[4]);

}



private void iniTextView() {
    // TODO Auto-generated method stub
    dp_octet1 = (TextView) findViewById(R.id.octet1);
    dp_octet2 = (TextView) findViewById(R.id.octet2);
    dp_octet3 = (TextView) findViewById(R.id.octet3);
    dp_octet4 = (TextView) findViewById(R.id.octet4);
    dp_slashes = (TextView) findViewById(R.id.slashes);
}

丸太の猫

08-05 09:11:07.180: D/AndroidRuntime(1286): VM をシャットダウンしています 08-05 09:11:07.180: W/dalvikvm(1286): threadid=1: キャッチされない例外で終了するスレッド (group=0x4001d800) 08 -05 09:11:07.203: E/AndroidRuntime(1286): 致命的な例外: メイン 08-05 09:11:07.203: E/AndroidRuntime(1286): java.lang.RuntimeException: アクティビティ ComponentInfo{com.example を開始できません.myscratches/com.example.myscratches.SampleActivity}: java.lang.ArrayIndexOutOfBoundsException 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) で 08- 05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app. ActivityThread.access$2300(ActivityThread.java:125) 08-05 09:11:07.203:E/AndroidRuntime(1286): android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.os.Handler.dispatchMessage(Handler) .java:99) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.os.Looper.loop(Looper.java:123) 08-05 09:11:07.203: E/AndroidRuntime(1286) ): android.app.ActivityThread.main(ActivityThread.java:4627) 08-05 09:11:07.203: E/AndroidRuntime(1286): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 08-05 で09:11:07.203: E/AndroidRuntime(1286): java.lang.reflect.Method.invoke(Method.java:521) 08-05 09:11:07.203: E/AndroidRuntime(1286): com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-05 09:11:07.203: E/AndroidRuntime(1286): com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 626) 08-05 09:11:07.203: E/AndroidRuntime(1286): dalvik.system.NativeStart.main(Native Method) 08-05 09:11:07.203: E/AndroidRuntime(1286): 原因: java.lang.ArrayIndexOutOfBoundsException 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.generatingRandomIpAddress(SampleActivity.java:32) 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example で.myscratches.SampleActivity.onCreate(SampleActivity.java:24) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-05 09:11 :07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-05 09:11:07.203: E/AndroidRuntime(1286): ... 11 もっと見る07.203: E/AndroidRuntime(1286): 原因: java.lang.ArrayIndexOutOfBoundsException 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.generatingRandomIpAddress(SampleActivity.java:32) で08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.onCreate(SampleActivity.java:24) 08-05 09:11:07.203: E/AndroidRuntime(1286): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-05 09: 11:07.203: E/AndroidRuntime(1286): ... 11 詳細07.203: E/AndroidRuntime(1286): 原因: java.lang.ArrayIndexOutOfBoundsException 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.generatingRandomIpAddress(SampleActivity.java:32) で08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.onCreate(SampleActivity.java:24) 08-05 09:11:07.203: E/AndroidRuntime(1286): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-05 09: 11:07.203: E/AndroidRuntime(1286): ... 11 詳細生成するRandomIpAddress(SampleActivity.java:32) 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.onCreate(SampleActivity.java:24) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java) :2627) 08-05 09:11:07.203: E/AndroidRuntime(1286): ... 11 もっと見る生成するRandomIpAddress(SampleActivity.java:32) 08-05 09:11:07.203: E/AndroidRuntime(1286): com.example.myscratches.SampleActivity.onCreate(SampleActivity.java:24) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-05 09:11:07.203: E/AndroidRuntime(1286): android.app.ActivityThread.performLaunchActivity(ActivityThread.java) :2627) 08-05 09:11:07.203: E/AndroidRuntime(1286): ... 11 もっと見るperformLaunchActivity(ActivityThread.java:2627) 08-05 09:11:07.203: E/AndroidRuntime(1286): ... 11 もっと見るperformLaunchActivity(ActivityThread.java:2627) 08-05 09:11:07.203: E/AndroidRuntime(1286): ... 11 もっと見る

4

2 に答える 2

1

octetその要素に値を割り当て始める前に、初期化する必要があります。宣言を次のように変更します。

int octet[] = new int[4];

または、次の行を追加します。

octet = new int[4];

generatingRandomIpAddress()の要素への割り当てを開始する前にoctet

PS 今後、例外に関するヘルプを求める場合は、例外のスタック トレースを示す logcat 出力を投稿する必要があります。

于 2012-08-05T08:33:48.553 に答える
0

これが ADT に当てはまるかどうかはわかりませんが、NullPointerException がスローされている Java コードがあり、それがスローされている場所を見つける必要がある場合は、次のいずれかを実行します。

  1. スタック トレースを調べる
  2. 例外ブレークポイントを配置します。

上記の #2 については、こちらをご覧ください。このブレークポイントの設定中に「Uncaught」を選択すると、 NullPointer 例外がスローされたときに実行が自動的に停止します。

于 2012-08-05T17:17:51.320 に答える