2013-02-10 48 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); 

还检查您的数据是否为空。如果它是空的,则处理不当。

然后你的代码运行良好。