Android 无法从BroadcastReceiver更改TextView内容
我正在尝试从BroadcastReceiver获取字符串,它将在我的活动中设置TextView的内容 我有两个Java类Android 无法从BroadcastReceiver更改TextView内容,android,string,broadcastreceiver,getter-setter,Android,String,Broadcastreceiver,Getter Setter,我正在尝试从BroadcastReceiver获取字符串,它将在我的活动中设置TextView的内容 我有两个Java类 MainActivity:它有一个文本视图,我想更改它的文本 batteryinfo:它扩展了广播接收机。这个班有 方法返回自定义字符串(getString()) 这是主活动的代码 package com.example.batteryhealth; import android.app.Activity; import android.content.Intent; im
package com.example.batteryhealth;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
BatteryManager bm;
TextView health;
String string;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
health=(TextView)findViewById(R.id.textView1);
//status=(TextView)findViewById(R.id.textView2);
batteryinfo bmc= new batteryinfo(bm,string);
this.registerReceiver(bmc, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
health.setText(bmc.gethealth());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
以下是batteryinfo的代码:
package com.example.batteryhealth;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
public class batteryinfo extends BroadcastReceiver{
BatteryManager bm;
String health;
public batteryinfo(BatteryManager b,String hea) {
// TODO Auto-generated constructor stub
this.bm=b;
this.health=hea;
}
@Override
public void onReceive(Context arg0, Intent intent) {
// TODO Auto-generated method stub
int i= intent.getIntExtra(bm.EXTRA_HEALTH, 0);
boolean s=true;
if(s=i==bm.BATTERY_HEALTH_COLD)
{
health="cold";
}
else if(s=i==bm.BATTERY_HEALTH_GOOD)
{
health="good";
}
else if (s=i==bm.BATTERY_HEALTH_OVERHEAT)
{
health="overheat" ;
}
else if (s=i==bm.BATTERY_HEALTH_OVER_VOLTAGE)
{
health="overvolteage";
}
}
public String gethealth()
{
return health;
}
}
如果我在MainActivity中创建一个嵌套类(它也扩展了BroadcastReceiver),代码工作正常,但是在创建一个单独的类后,它不起作用,并且我的文本视图为空。在MainActivity中注册一个新的广播接收器,然后从batteryinfo类向MainActivity类发送广播,并更改MainActivity接收器中的文本在接收时在
中放入日志.i
,看看是否收到了广播?@神秘魔法是对的。我们需要更多的细节。