2012-10-17 28 views
0

這個活動應該調用另一個活動,但是它強制關閉應用程序。當一個新的Intent被調用時Android活動強制關閉

package com.example.helloworld; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class Data extends Activity implements OnClickListener { 

    Button start, startFor; 
    EditText sendET; 
    TextView gotAnswer; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.get); 
     initialize(); 
    } 

    private void initialize() { 
     // TODO Auto-generated method stub 
     start = (Button) findViewById(R.id.bSA); 
     startFor = (Button) findViewById(R.id.bSAFR); 
     sendET = (EditText) findViewById(R.id.etSend); 
     gotAnswer = (TextView) findViewById(R.id.tvGot); 
     start.setOnClickListener(this); 
     startFor.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()) { 
     case R.id.bSA: 
      String bread = sendET.getText().toString(); 
      Bundle basket = new Bundle(); 
      basket.putString("key", bread); 

      Intent a = new Intent(Data.this, OpenedClass.class); 
      a.putExtras(basket); 
      startActivity(a); 
      break; 

     case R.id.bSAFR: 
      Intent i = new Intent(Data.this, OpenedClass.class); 
      startActivityForResult(i,0); 
      break; 
     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

} 

這是其他的活動,是被稱爲:

package com.example.helloworld; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.RadioGroup; 
import android.widget.RadioGroup.OnCheckedChangeListener; 
import android.widget.TextView; 

public class OpenedClass extends Activity implements OnClickListener, 
     OnCheckedChangeListener { 

    TextView question, test; 
    Button returnData; 
    RadioGroup selectionList; 
    String gotBread, setData; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.send); 
     initialize(); 
     Bundle gotBasket = getIntent().getExtras(); 
     gotBread = gotBasket.getString("key"); 
     question.setText(gotBread); 

    } 

    private void initialize() { 
     // TODO Auto-generated method stub 
     question = (TextView) findViewById(R.id.tvQuestions); 
     test = (TextView) findViewById(R.id.tvText); 
     returnData = (Button) findViewById(R.id.bResults); 
     selectionList = (RadioGroup) findViewById(R.id.rgAnswers); 
     returnData.setOnClickListener(this); 
     selectionList.setOnCheckedChangeListener(this); 


    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

    public void onCheckedChanged(RadioGroup arg0, int arg1) { 
     // TODO Auto-generated method stub 
     switch (arg1) { 
     case R.id.rChoice1: 
      setData="ABC"; 
      break; 
     case R.id.rChoice2: 
      setData="MNO"; 
      break; 
     case R.id.rChoice3: 
      setData="XYZ"; 
      break; 
     } 
     test.setText(setData); 
    } 

} 

這是我AndroidMaifest.xml文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.helloworld" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="15" /> 
    <uses-permission android:name="android.permission.SET_WALLPAPER"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".Splash" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Menu" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="com.example.helloworld.MENU" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".TextPlay" android:label="@string/title_activity_main" > 
     </activity> 
     <activity 
      android:name=".Email" android:label="@string/title_activity_main" > 
     </activity> 
     <activity 
      android:name=".Camera" android:label="@string/title_activity_main" android:screenOrientation="portrait" > 
     </activity> 
     <activity 
      android:name=".Data" android:label="@string/title_activity_main" > 
     </activity> 
     <activity 
      android:name=".OpenedClass" android:label="@string/title_activity_main" > 
     </activity> 
    </application> 

</manifest> 

最後的logcat日誌:

10-17 10:36:56.423: D/AndroidRuntime(272): Shutting down VM 
10-17 10:36:56.423: W/dalvikvm(272): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
10-17 10:36:56.453: E/AndroidRuntime(272): FATAL EXCEPTION: main 
10-17 10:36:56.453: E/AndroidRuntime(272): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloworld/com.example.helloworld.OpenedClass}: java.lang.NullPointerException 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.os.Looper.loop(Looper.java:123) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread.main(ActivityThread.java:4627) 
10-17 10:36:56.453: E/AndroidRuntime(272): at java.lang.reflect.Method.invokeNative(Native Method) 
10-17 10:36:56.453: E/AndroidRuntime(272): at java.lang.reflect.Method.invoke(Method.java:521) 
10-17 10:36:56.453: E/AndroidRuntime(272): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-17 10:36:56.453: E/AndroidRuntime(272): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-17 10:36:56.453: E/AndroidRuntime(272): at dalvik.system.NativeStart.main(Native Method) 
10-17 10:36:56.453: E/AndroidRuntime(272): Caused by: java.lang.NullPointerException 
10-17 10:36:56.453: E/AndroidRuntime(272): at com.example.helloworld.OpenedClass.initialize(OpenedClass.java:38) 
10-17 10:36:56.453: E/AndroidRuntime(272): at com.example.helloworld.OpenedClass.onCreate(OpenedClass.java:25) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
10-17 10:36:56.453: E/AndroidRuntime(272): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
10-17 10:36:56.453: E/AndroidRuntime(272): ... 11 more 
10-17 10:36:59.083: I/Process(272): Sending signal. PID: 272 SIG: 9 

問題是,應用程序編譯沒有錯誤,但當我嘗試調用該活動時崩潰。我不確定問題出在哪裏。它是清單嗎?

+1

PLZ添加XML文件也。 –

+0

什麼在線沒有。 OpenedClass中的25和38? –

+0

我認爲第38行是「returnData.setOnClickListener(this); 」 –

回答

2

如果我正確計數線(排隊OpenedClass.java的38)正在被在該線中產生的NPE:

returnData.setOnClickListener(this); 

內部OpenedClass.initialize()。變量returnData正在初始化通過以上幾行:

returnData = (Button) findViewById(R.id.bResults); 

問題是最有可能是您的佈局(send.xml)不具有bResults視圖,以便returnData被分配null

+0

在這種情況下,你不認爲它不應該編譯。 –

+1

@YogeshSomani - 不一定。如果'bResults'在任何XML文件中的任何地方定義(或者明確聲明爲一個id),該id將存在於'R.id'中。它可能不存在於layout/send.xml中 –

0

你用這條線

a.putExtras(basket); 

第一類,而不是收到的OpenedClass

這一意圖,也許這是問題

+0

這不會導致出現在日誌中的異常。 –

0

它看起來像你的觀點之一是不被發現。

調試你的應用程序,並確保它們都被找到並且不返回null;

0

只是改變像這樣在活動

case R.id.bSA: 
     String bread = sendET.getText().toString();  
     Intent a = new Intent(Data.this, OpenedClass.class); 
     a.putExtras("key", bread); 
     startActivity(a); 
     break; 
1

試試這個:

startFor.setOnClickListener(new OnClickListener() 
     { 
     @Override 
     public void onClick(View v) 
     { 
     // TODO Auto-generated method stub 
     switch (v.getId()) { 
     case R.id.bSA: 
     String bread = sendET.getText().toString(); 
     Bundle basket = new Bundle(); 
     basket.putString("key", bread); 

     Intent a = new Intent(Data.this, OpenedClass.class); 
     a.putExtras(basket); 
     startActivity(a); 
     break; 

    case R.id.bSAFR: 
     Intent i = new Intent(Data.this, OpenedClass.class); 
     startActivityForResult(i,0); 
     break; 
    } 
    }); 
相關問題