Приложението за Android връща NULL

Преди да започна, позволете ми да кажа, че търсих наоколо през последните два дни, за да разреша грешката, намерих някакво използваемо решение, което не работи с мен. И така, най-накрая публикувам моя код тук:

Относно кода:

Исках да напиша Java приложение, за да проверя сценарий за настройка на Audio Manager на 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);

and 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() връща null за персонализиран компонент в XML оформление, не и за други компоненти

Използвам най-новата версия на Android SDK 4.0.3 и Esclipse IDE за Java

всяка помощ ще бъде оценена,

Благодаря ти


person Select Call    schedule 31.01.2012    source източник
comment
Всичко това xml от вашия манифест ли е? Ако е така, вашите бутони и неща трябва да бъдат декларирани във файл с оформление, а не във вашия манифест. Предполагам, че ще получите всякакви странни грешки, ако опитате да декларирате изгледи в такъв манифест. Също така, ако можете да публикувате повече от редовете, които са под този, който казва java.lang.NullPointerException във вашия дневник, той ще ви каже кой ред във вашия java файл причинява нулевия указател   -  person FoamyGuy    schedule 01.02.2012
comment
Не трябва да имате XML оформление във вашия манифест. Трябва да е в собствен XML файл, в папката res.   -  person bschultz    schedule 01.02.2012
comment
Нов съм, така че мога да го посоча грешно. моля, поправете ме, ако казвам нещо с грешна терминология. Xml кодът, който публикувах, е от AndroidManifest.xml, който считам за файл с оформление.   -  person Select Call    schedule 01.02.2012
comment
AndroidManifest.xml не е файл с оформление. Ако проверите във вашата папка /res, трябва да видите main.xml. Това е файл с оформление. Добавете всички нови XML файлове с оформление към тази папка. Във вашия onCreate можете да видите къде указва какъв файл с оформление използва дейността: setContentView(R.layout.main);   -  person bschultz    schedule 01.02.2012
comment
Да, намерих го в папката /res/layout и както предполагам, модифицирам main.xml и сега мога да видя бутона на моя екран. Благодаря на всички ви:)   -  person Select Call    schedule 01.02.2012


Отговори (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>
person zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz    schedule 31.01.2012