Variable nicht in gleicher Klasse abrufbar . Warum ?!?

keinbrain

keinbrain

Erfahrenes Mitglied
21
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 ;)
 
du deklarierst die variable level innerhalb des broadcastreceivers und einmal außerhalb.

das ist schonmal von haus aus verwirrend.
 
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 ;)
 
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
 
BroadcastReceiver importieren bze. wieder zurückgeben ?
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.



sixi schrieb:
- und bitte benutz den "code" Block und formatier (TABS!) den Quellcode richtig. Bei sovielen verschachtelten Blöcken dauert es ewig durchzusehen ;)

CODE-Block! "[ CODE ] quellcode [ /CODE ]" (ohne die Leerzeichen in den eckigen Klammern)
 

Ähnliche Themen

S
Antworten
3
Aufrufe
637
swa00
swa00
D
Antworten
23
Aufrufe
2.542
Data2006
D
SaniMatthias
Antworten
19
Aufrufe
959
swa00
swa00
Zurück
Oben Unten