0
我有一個鬧鐘設置,該部分工作。收到警報時,我將字符串設置爲與警報一起保存的消息。但是當我在UI上顯示這個字符串時,它沒有設置。沒有從AlarmReceiver設置字符串
這是第一個代碼,顯示用戶界面,將顯示字符串:
public class ShowAlm extends Activity {
private static String MessStr="ZZZ";
public static void setMessStr(String messStr) {
MessStr = messStr;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showalm);
Toast.makeText(this,"Message " + MessStr, Toast.LENGTH_SHORT).show();
}
然後測試它沒有我把另一個類的按鈕上面打電話報警,一切按預期工作:
btnplot.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
ShowAlm.setMessStr("AAA");
Intent intent1 = new Intent(context, ShowAlm.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent1);
//TestAlarm();
//Intent intent = new Intent(v.getContext(), AutoComplete4.class);
// startActivity(intent);
}
});
這裏是問題所在,代碼與上面的按鈕相同,但在接收器中不起作用。該字符串未設置。
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString("alarm_message");
System.out.println("Message = " + message);
ShowAlm.setMessStr("AAA");
Intent intent1 = new Intent(context, ShowAlm.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent1);
} catch (Exception e) {
}
}
所以當上面的第二個代碼顯示MessStr是默認值。我也嘗試編碼「AAA」作爲字符串,但沒有幫助。
所以最終的結果是日誌顯示的字符串是存在的,但是當UI顯示時字符串是默認的。
想法?
工作很好!那是你應該如何將變量傳遞給其他類的?我一直這樣做的方式似乎一直工作,直到接收器(),當我碰到deadend – 2011-03-16 17:15:32
是的,這是在活動之間傳遞數據的方式。 – 2011-03-16 19:28:50