2012-08-05 99 views
0

即时通讯非常新的开发Android应用程序..当我在模拟器中运行我的程序强制关闭..我想通了,我需要设置一个nullpointerexception但我不知道在哪里设置这些东西.. 请帮助我。在哪里设置nullpointerexception

公共类SampleActivity延伸活动{

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 9点11: 07.180:W/dalvikvm(1286):threadid = 1:线程以未捕获的异常退出(组= 0x4001d800) 08-05 09:11:07.203:E/AndroidRuntime(1286):致命例外:main 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):at 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):at android.app.ActivityThread.access $ 2300 ActivityThread.java:125) 08-05 09:11:07.203:E/AndroidRuntime(1286):at 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):at android.os.Looper.loop(Looper。 java:123) 08-05 09:11:07.203:E/AndroidRuntime(1286):at android .app.ActivityThread.main(ActivityThread.java:4627) 08-05 09:11:07.203:E/AndroidRuntime(1286):at java.lang.reflect.Method.invokeNative(Native Method) 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):at com.android。 internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 08-05 09:11:07.203:E/AndroidRuntime(1286):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 626) 08-05 09:11:07.203:E/AndroidRuntime(1286):at 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):at com.example.myscratches.SampleActivity.generatingRan domIpAddress(SampleActivity.java:32) 08-05 09:11:07.203:E/AndroidRuntime(1286):at 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):at android.app.ActivityThread.performLaunchActivity ActivityThread.java:2627) 08-05 09:11:07.203:E/AndroidRuntime(1286):... 11更多

回答

1

您需要初始化octet,然后才能开始将值分配给其元素。你的声明更改为:

int octet[] = new int[4]; 

另外,加入这一行:

octet = new int[4]; 

generatingRandomIpAddress()你开始分配给的octet的元素之前。

P.S.将来,当你要求异常帮助时,你应该发布显示异常堆栈跟踪的logcat输出。

+0

需要帮助。 :) – 2012-08-05 09:05:21

+0

但它仍然无法正常工作,在这里我会发布我的日志猫.. – 2012-08-05 09:14:56

0

我不确定这是否适用于ADT,但是如果我有一段Java代码中抛出了NullPointerException,并且我必须找出它被抛出的位置,我会执行以下操作之一:

  1. 通过堆栈跟踪
  2. 把一个异常断点去。

对于上面的#2,看看this。如果在设置此断点时选择“未捕获”,则在抛出任何 NullPointer异常时,执行应自动停止。