2013-02-10 53 views
0

我做了2個類YehActivity.java和h.java。在運行應用程序時出現錯誤,應用程序意外停止。以下是代碼使用startActivityForResult

public class YehActivity extends Activity { 
public static final int r=1; 
Button b; 
TextView tv; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     b.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent i=new Intent(YehActivity.this,he.class); 
       //startActivity(i); 
       startActivityForResult(i, r); 
       } 
     }); 
     } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     if(requestCode==r && resultCode==RESULT_OK){ 
         String h=data.getStringExtra("a"); 
         tv.setText(h); 
      } 
     } 
    }  

在哪裏檢查爲空。

這是第二個文件

public class he extends Activity{ 
Button b; 
EditText et; 
Intent i=getIntent(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.h); 

    b=(Button) findViewById(R.id.button12); 
    et=(EditText) findViewById(R.id.editText1); 

     b.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       String value=et.getText().toString().trim(); 

       i.putExtra("a", value); 
       he.this.setResult(RESULT_OK, i); 
       finish(); 
       } 
     }); 

    } 

} 

和日誌文件是

02-11 23:31:46.408: I/Process(302): Sending signal. PID: 302 SIG: 9 
02-11 23:45:04.778: D/AndroidRuntime(357): Shutting down VM 
02-11 23:45:04.778: W/dalvikvm(357): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
02-11 23:45:04.798: E/AndroidRuntime(357): FATAL EXCEPTION: main 
02-11 23:45:04.798: E/AndroidRuntime(357): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ye/com.ye.YehActivity}: java.lang.NullPointerException 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.os.Looper.loop(Looper.java:123) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-11 23:45:04.798: E/AndroidRuntime(357): at java.lang.reflect.Method.invokeNative(Native Method) 
02-11 23:45:04.798: E/AndroidRuntime(357): at java.lang.reflect.Method.invoke(Method.java:507) 
02-11 23:45:04.798: E/AndroidRuntime(357): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-11 23:45:04.798: E/AndroidRuntime(357): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-11 23:45:04.798: E/AndroidRuntime(357): at dalvik.system.NativeStart.main(Native Method) 
02-11 23:45:04.798: E/AndroidRuntime(357): Caused by: java.lang.NullPointerException 
02-11 23:45:04.798: E/AndroidRuntime(357): at com.ye.YehActivity.onCreate(YehActivity.java:23) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-11 23:45:04.798: E/AndroidRuntime(357): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
02-11 23:45:04.798: E/AndroidRuntime(357): ... 11 more 
02-11 23:45:11.158: I/Process(357): Sending signal. PID: 357 SIG: 9 
02-11 23:45:22.708: D/AndroidRuntime(374): Shutting down VM 
02-11 23:45:22.708: W/dalvikvm(374): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
02-11 23:45:22.728: E/AndroidRuntime(374): FATAL EXCEPTION: main 
02-11 23:45:22.728: E/AndroidRuntime(374): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ye/com.ye.YehActivity}: java.lang.NullPointerException 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.os.Looper.loop(Looper.java:123) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-11 23:45:22.728: E/AndroidRuntime(374): at java.lang.reflect.Method.invokeNative(Native Method) 
02-11 23:45:22.728: E/AndroidRuntime(374): at java.lang.reflect.Method.invoke(Method.java:507) 
02-11 23:45:22.728: E/AndroidRuntime(374): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-11 23:45:22.728: E/AndroidRuntime(374): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-11 23:45:22.728: E/AndroidRuntime(374): at dalvik.system.NativeStart.main(Native Method) 
02-11 23:45:22.728: E/AndroidRuntime(374): Caused by: java.lang.NullPointerException 
02-11 23:45:22.728: E/AndroidRuntime(374): at com.ye.YehActivity.onCreate(YehActivity.java:23) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-11 23:45:22.728: E/AndroidRuntime(374): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
02-11 23:45:22.728: E/AndroidRuntime(374): ... 11 more 
02-11 23:45:25.497: I/Process(374): Sending signal. PID: 374 SIG: 9 
+0

請分享crash-log – ligi 2013-02-10 11:43:34

+0

您是否檢查「數據」是否爲空? – 2013-02-10 11:44:36

回答

1

在您嘗試使用b

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    b.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent i=new Intent(YehActivity.this,he.class); 
      //startActivity(i); 
      startActivityForResult(i, r); 
      } 
    }); 
} 

onCreate()方法,但你永遠不初始化(我假設它被聲明爲全局變量)。這意味着當您嘗試撥打setOnClickListener()時,您將遇到NullPointerException

+0

public class YehActivity extends Activity public static final int r = 1; \t Button b; \t TextView tv; /**當活動首次創建時調用。 */ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); – user2058628 2013-02-10 17:47:50

1

在OnCreate()中的代碼中,您必須將b聲明爲button,然後將偵聽器應用於該代碼。

b=(Button) findViewById(R.id.button12); 

還檢查您的數據是否爲空。如果它是空的,則處理不當。

然後你的代碼運行良好。