Søknad krasjer - Silent Mode Toggle - Android for Dummies

stemmer
1

Jeg er ferdig kode for Silent Mode Toggle Application (android apps for dummies). Koden min er identisk med den i boken, med små unntak på grunn av den nyere Android. Alt fungerer fint, men hvis jeg starter programmet, det krasjer med feilmeldingen: Dessverre har Silent Mode Toggle stoppet.

Jeg fant ut at problemet er noe med setOnClickListener metoden.

Det er ingen liten Kompilerings- feil, sier formørkelse alt er kult.

Den aktuelle delen av koden:

 package com.dummies.android.silentmodetoggle;

 import android.support.v7.app.ActionBarActivity;
 import android.support.v7.app.ActionBar;
 import android.support.v4.app.Fragment;
 import android.graphics.drawable.Drawable;
 import android.media.AudioManager;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.os.Build;

 public class MainActivity extends ActionBarActivity {

private AudioManager mAudioManager;
private boolean mPhoneIsSilent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ////////////////////////////////////////////////////////////////////////////
    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
    /////////////////////////////////////////////////////////////////////////////

    mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    checkIfPhoneIsSilent();
    setButtonClickListener();

}

    private void setButtonClickListener(){

    Button toggleButton = (Button) findViewById(R.id.toggleButton);
    toggleButton.setOnClickListener (new View.OnClickListener() {

            public void onClick (View v){

            if (mPhoneIsSilent) {
            mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                mPhoneIsSilent=false;
            } else {
            mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                mPhoneIsSilent=true;
            }
 //             toggleUi();
        }
    });
}

    private void checkIfPhoneIsSilent(){
        int ringerMode = mAudioManager.getRingerMode();
        if (ringerMode == AudioManager.RINGER_MODE_SILENT){
            mPhoneIsSilent = true;
        } else {
            mPhoneIsSilent = false;
        }
    }

Hvis jeg kommentere kroppen av setButtonClickListener metoden med // ut, slik at den har bare den første linjen venstre: Knapp toggleButton = (Button) findViewById (R.id.toggleButton); enn søknaden ikke krasje. Så, liksom setOnClickListener (med arvet onClick) gjør bryet.

Jeg sjekket de andre systemfiler, men som nevnt, det er ingen Kompilerings- feil, jeg sjekket nettstedet ditt også, men jeg har ikke funnet dette spørsmålet. Så jeg har ingen anelse om nå.

Jeg ville sette pris på noen ideer og hjelp. Sorry for den sannsynligvis veldig amatør spørsmålet. Tusen takk! Z


Hei, takk for svar

Hei, takk for svar!

Android 4.4.2 i manifestet:

Jeg håper dette er stakksporingen du nevnte:

Desember 4 til 7: 58: 32,560: D / AndroidRuntime (2370): Slå VM

Desember 4 til 7: 58: 32,560: W / dalvikvm (2370): Tråd-= 1: tråd som kommer ut med unntak uoppfanget (group = 0xb2a7aba8)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): uopprettelig unntak: hoved

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): Prosess: com.dummies.android.silentmodetoggle, PID: 2370

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): java.lang.RuntimeException: ikke starte aktiviteten ComponentInfo {com.dummies.android.silentmodetoggle / com.dummies.android.silentmodetoggle.MainActivity}: java.lang .NullPointerException

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2195)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2245)

4 til 7 desember: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread.access $ 800 (ActivityThread.java:135)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1196)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.os.Handler.dispatchMessage (Handler.java:102)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.os.Looper.loop (Looper.java:136)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread.main (ActivityThread.java:5017)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved java.lang.reflect.Method.invokeNative (Native Method)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved java.lang.reflect.Method.invoke (Method.java:515)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): i

com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:779)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved com.android.internal.os.ZygoteInit.main (ZygoteInit.java:595)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved dalvik.system.NativeStart.main (Native Method)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): forårsaket av: java.lang.NullPointerException

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved com.dummies.android.silentmodetoggle.MainActivity.setButtonClickListener (MainActivity.java:43)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved com.dummies.android.silentmodetoggle.MainActivity.onCreate (MainActivity.java:36)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.Activity.performCreate (Activity.java:5231)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ved android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2159)

Desember 4 til 7: 58: 32,580: E / AndroidRuntime (2370): ... 11 mer

Publisert på 07/04/2014 klokken 14:46
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Jeg har løst problemet (akkurat i tide før min laptop ville ha fløyet ut av vinduet).

Men løsningen har gjort opp noen andre spørsmål.

Så først, hvis noen har det samme problemet, jeg gjorde dette:

Jeg har endret den utvidede klassen til aktivitet. Du er nødt til å importere den.

Du må slette eller kommentere det 'hvis' i onCreate metoden ut.

og å endre parameteren for setContentView til: R.layout.fragment_main (i har den Imageview og knappen i fragment_main)

Vel, det fungerer nå, men det betyr ikke at jeg virkelig undertsand hvorfor, og hva som var problemet, som 'strekker ActionBarAcitivity' en standardinnstilling er, ville du forvente at det vil fungere.

Men jeg er ny i dette, så jeg har ingen anelse ...

Jeg vil gjøre min forskning på dette temaet videre, men om dere kunne kommentere dette, hva var grunnen, det er akkurat nå endret, etc, ville jeg virkelig pris på det!

Takk skal du ha

Svarte 09/04/2014 kl. 15:14
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more