-1
我想從BroadcastReceiver獲取字符串,它將在我的活動中設置TextView的內容。無法更改BroadcastReceiver中的TextView內容
我有兩個Java類
MainActivity:它擁有我想要更改其文字TextView的。
batteryinfo:它擴展了BroadcastReceiver。此類具有 方法,返回自定義串(的getString())
這裏是MainActivity的代碼
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中創建了一個嵌套類(它也擴展了BroadcastReciver),那麼代碼工作正常,但創建一個單獨的類後,它不起作用,而且我的TextView是空的。
放一個'Log.i'在'onReceive'文本,看看廣播是否收到? – 2014-10-11 09:18:23
@MysticMagic是對的。我們需要更多細節。 – 2014-10-11 09:47:19