1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. keinbrain, 24.03.2012 #1
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Hi, ich versuche den aktuellen Akkustatus abzufragen und ihn in einem ProgressBar anzuzeigen , aber die variable "level" wird als fehler bei progressstatus = level angezeigt . warum, die variable level wird doch in der gleichen klasse über @override deklariert ?!

    mProgress = (ProgressBar) findViewById(R.id.pb1);

    // Start lengthy operation in a background thread
    new Thread(new Runnable() {
    public void run() {
    while (mProgressStatus < 100) {

    int level = -1;

    /*Beginn der Abfrage der Akkuleistung */

    BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
    int level = -1;
    @Override
    public void onReceive(Context context, Intent intent) {
    level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);

    }


    };
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryReceiver, filter);


    /* Ende Abfrage */


    mProgressStatus = level ;

    // Update the progress bar
    mHandler.post(new Runnable() {
    public void run() {
    mProgress.setProgress(mProgressStatus);
    }
    });
    }
    }

    VIELEN DANK IM VORRAUS ;)
     
  2. swordi, 25.03.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    du deklarierst die variable level innerhalb des broadcastreceivers und einmal außerhalb.

    das ist schonmal von haus aus verwirrend.
     
  3. sixi, 25.03.2012 #3
    sixi

    sixi Erfahrener Benutzer

    Da hat der Swordi auf jedenfall Recht :) Dadurch wirst du auch nie aus deiner while-Schleife herauskommen: Das "level" in der Schleife wird immer -1 bleiben, mProgressStatus wird immer auf -1 gesetzt, ...

    Kannst du mal die ganze Klasse posten? Weil wenn du sagst dass in der "mProgressStatus = level ;" Zuweisung nen Fehler ist, liegt es wohl eher an dem mProgressStatus als an dem level.

    - und bitte benutz den "code" Block und formatier (TABS!) den Quellcode richtig. Bei sovielen verschachtelten Blöcken dauert es ewig durchzusehen ;)
     
  4. keinbrain, 25.03.2012 #4
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Wie kann ich denn eine variable in BroadcastReceiver importieren bze. wieder zurückgeben ? return kann ich nicht benutzen da void für broadcast receiver als einziger erlaubter wert definiert ist.
    PS: ich formatiere immer , aber iwie ist die formatierung beim einfügen verloren gegangen
    HIER DER CODE :

    package Infodroit.first;

    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.BatteryManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ProgressBar;
    import android.widget.TextView;

    public class akku extends Activity{

    /* T" */

    private static final int PROGRESS = 0x1;

    private ProgressBar mProgress;
    private int mProgressStatus = 0;

    private Handler mHandler = new Handler();

    /* T2 ENDE */

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

    String unbek = "unknown" ; /*unbekannt string definieren */
    String nichtver = "Leider nicht verfügbar" ; /* L. n. v. defininieren */

    /* TEST */

    /*PRGORESS BAR TEST */

    mProgress = (ProgressBar) findViewById(R.id.pb1);

    // Start lengthy operation in a background thread
    new Thread(new Runnable() {
    public void run() {
    while (mProgressStatus < 100) {

    int level = 1;

    /*Beginn der Abfrage der Akkuleistung */ /* Int level 0 austauschen durch -1 */

    akkuabfrage();

    try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {

    e.printStackTrace();
    }

    /* Ende Abfrage */

    mProgressStatus = 100 ; /* HIER WERT AN PB ÜBERGEBEN */

    // Update the progress bar
    mHandler.post(new Runnable() {
    public void run() {
    mProgress.setProgress(mProgressStatus);

    }

    });

    }

    }
    }).start();


    /*ENDE TEST */




    /*Buttons werden aktiviert - Klick wechselt die activity bzw. das Layout */


    buttons();


    }

    public void akkuabfrage (){


    BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
    int level = 0;
    @Override
    public void onReceive(Context context, Intent intent) {
    level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);


    }


    };
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(batteryReceiver, filter);

    }

    public void buttons () {


    final Button button1 = (Button) findViewById(R.id.But1);
    button1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {



    startActivity(new Intent (akku.this, System.class));
    akku.this.finish();
    }
    });

    final Button button2 = (Button) findViewById(R.id.But2);
    button2.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

    startActivity(new Intent (akku.this, erweitert.class));
    akku.this.finish();
    }
    });

    final Button button3 = (Button) findViewById(R.id.But3);
    button3.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

    startActivity(new Intent (akku.this, speicher.class));
    akku.this.finish() ;
    }
    });

    }

    }

    EDIT : Formatierung ist seltsamerweise wieder raus o.O
     
  5. sixi, 26.03.2012 #5
    sixi

    sixi Erfahrener Benutzer

    Prinzipiell erst einmal gar nicht. Aber du kannst auf die Klassen-Variablen zugreifen, solange du dich in der selbigen (oder einer eingebetteten Klasse) befindest.

    Und ganz ehrlich - und sei mir nicht böse - aber wenn ich mir die Sinnhaftigkeit deines Codes anschaue, dann solltest du dich vielleicht erstmal mit Java Grundlagenbeschäftigen.



    CODE-Block! "[ CODE ] quellcode [ /CODE ]" (ohne die Leerzeichen in den eckigen Klammern)
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Wie "SimpleGestureListener"-Klasse einbinden? Android App Entwicklung 05.09.2018
Methode fürs Verlinken von Variablen mit IDs? Android App Entwicklung 27.08.2018
Wie viele Klassen und Layouts brauche ich für meine App? Android App Entwicklung 05.08.2018
Warum Stürtzt meine App ab? (Beim Öffnen von content_3) Android App Entwicklung 27.02.2018

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. new Runnable warum

Du betrachtest das Thema "Variable nicht in gleicher Klasse abrufbar . Warum ?!?" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.