2012-01-31 78 views
0

開始之前讓我說,我一直在尋找最後兩天解決錯誤,找到了一些可用的解決方案,沒有與我一起工作。所以最後我在這裏發佈我的代碼:Android應用程序返回NULL

關於代碼:

我想寫一個Java應用程序來檢查的場景設置音頻管理器MODE_IN_CALL。

代碼:

public class AudioBTActivity extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 

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



Button Onbutton = (Button)this.findViewById(R.id.setOn); 
    Button offButton = (Button)this.findViewById(R.id.setOff); 

    // listen for the button being hit 
    Onbutton.setOnClickListener((OnClickListener) this) ; 
    offButton.setOnClickListener((OnClickListener) this); 
    } 

     public void onClick(View v) { 
       switch(v.getId()) { 
       case R.id.setOff: 
        sAudioActivity(); 
        break; 
       case R.id.setOn : 
        AudioActivity(); 
       } 
        Log.e("AudioActivity() failed",null); 

       } 

      public void AudioActivity() { 
       // TODO Auto-generated method stub 
       AudioManager audioMngr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
       boolean isInCall = ((audioMngr.getMode() == AudioManager.MODE_IN_CALL)); 
       if(! isInCall){ 
        audioMngr.setMode(AudioManager.MODE_IN_CALL); 
       } 
      } 

     public void sAudioActivity() { 
       // TODO Auto-generated method stub 
      AudioManager audioMngr = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
      audioMngr.setMode(AudioManager.MODE_NORMAL); 

和xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.AudioBT" 
    android:versionCode="1" 
    android:versionName="1.0" > 
    <Button 
       android:id="@+id/setOn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="ON" 
       android:onClick="onClick" 
       > 

      </Button> 

<Button 
       android:id ="@+id/setOff" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="OFF" 
       android:onClick="onClick" 
       > 
       </Button> 
<Button 
       android:id="@+id/strBT" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:onClick="onClick" 
       > 
       </Button> 
    <Button 
       android:id ="@+id/stpBT" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:onClick="onClick" 
       > 
       </Button> 


    <uses-sdk android:minSdkVersion="15" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".AudioBTActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

錯誤: 01- 31 14:36:53.424:E/AndroidRuntime(1309):了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.AudioBT/com.AudioBT.AudioBTActivity}:顯示java.lang.NullPointerException

直到現在我無法達成墜機原因。一個類似的線程是在這裏不過我無法捕獲異常在我的情況 findViewById() returns null for custom component in layout XML, not for other components

我一直在使用最新版本的Android SDK 4.0.3和Esclipse IDE for Java的

任何幫助,將不勝感激,

謝謝

+1

在這個XML都是從你r清單?如果是這樣,你的按鈕和東西應該在佈局文件中聲明,而不是在你的清單中聲明。我想如果你嘗試在清單中聲明視圖,你會得到各種奇怪的錯誤。此外,如果您可以在日誌中發佈更多位於「java.lang.NullPointerException」之下的行,它會告訴您java文件中的哪一行導致空指針 – FoamyGuy 2012-01-31 21:23:10

+0

您不應該有任何佈局XML在你的清單中。它需要在它自己的XML文件中,在res文件夾中。 – bschultz 2012-01-31 21:28:09

+0

我是新來的,所以我可以指出它錯了。請糾正我,如果我說任何錯誤terminolgy。 我發佈的xml代碼來自AndroidManifest.xml,我認爲它是一個佈局文件。 – 2012-01-31 21:31:30

回答

1

把所有的代碼在res/main.xml中

<Button 
       android:id="@+id/setOn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="ON" 
       android:onClick="onClick" 
       > 

      </Button> 

<Button 
       android:id ="@+id/setOff" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="OFF" 
       android:onClick="onClick" 
       > 
       </Button> 
<Button 
       android:id="@+id/strBT" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:onClick="onClick" 
       > 
       </Button> 
    <Button 
       android:id ="@+id/stpBT" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:onClick="onClick" 
       > 
       </Button>