Android 活动don';上的广播接收器按钮视图中的startActivity;我没有出现
我从onReceive()启动活动alarmAlert.class。 活动开始了。 我的活动上有三个按钮和两个文本视图。 活动开始时,文本视图始终显示, 但是按钮并不总是出现 我从MainActivity开始活动,所有视图都有效 完美的 我能做什么都行。 谢谢 我有东西。 如果我的应用程序未在后台运行(单击菜单按钮,从列表中删除该应用程序) 从onReceive()启动的活动,按钮将不会显示。 如果应用程序仍然在后台运行,那么一切都是完美的 我的接收代码:Android 活动don';上的广播接收器按钮视图中的startActivity;我没有出现,android,Android,我从onReceive()启动活动alarmAlert.class。 活动开始了。 我的活动上有三个按钮和两个文本视图。 活动开始时,文本视图始终显示, 但是按钮并不总是出现 我从MainActivity开始活动,所有视图都有效 完美的 我能做什么都行。 谢谢 我有东西。 如果我的应用程序未在后台运行(单击菜单按钮,从列表中删除该应用程序) 从onReceive()启动的活动,按钮将不会显示。 如果应用程序仍然在后台运行,那么一切都是完美的 我的接收代码: @Override publi
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
int id = intent.getIntExtra("id", -1);
try{
Intent alertIntent=new Intent();
alertIntent.setClass(context, AlarmAlert.class);
Bundle bundle=new Bundle();
bundle.putInt("id", id);
alertIntent.putExtras(bundle);
alertIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alertIntent);
}
catch (Exception e){
AlarmGloble.writeLog(context,"AlarmReceiver:"+e.toString());
}
我的AlarmAlert代码的一部分
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.d("AA","onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_alert);
AlarmGloble.dbHelper=new DBHelper(this,AlarmGloble.DB_NAME,AlarmGloble.DB_VERSION);
AlarmGloble.dbLib=new DataBaseLib(AlarmGloble.dbHelper);
settingFromId();
findViews();
setListener();
updateView();
mVibrator=(Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
setSystemVolume(0);
//play mp3 by Handler
mHandler.sendMessage(mHandler.obtainMessage(PLAY));
}
private void updateView(){
TextView textViewSnooze=(TextView)findViewById(R.id.alarm_alertTextViewSnooze);
if (mp3Test){
textViewSnooze.setVisibility(View.INVISIBLE);
spinnerSnooze.setVisibility(View.INVISIBLE);
buttonClose.setVisibility(View.INVISIBLE);
buttonEdit.setVisibility(View.INVISIBLE);
}
else {
textViewSnooze.setVisibility(View.VISIBLE);
spinnerSnooze.setVisibility(View.VISIBLE);
buttonClose.setVisibility(View.VISIBLE);
buttonEdit.setVisibility(View.VISIBLE);
if(alarmRept<=0){
textViewSnooze.setVisibility(View.VISIBLE);
spinnerSnooze.setVisibility(View.VISIBLE);
}
else{
textViewSnooze.setVisibility(View.INVISIBLE);
spinnerSnooze.setVisibility(View.INVISIBLE);
if (alarmReptCount<alarmReptTimes)
if (alarmKind==0)
mMessage=mMessage+"\n"+"next alarm :"+mClockSnooze[alarmRept]+" ";
else
mMessage=mMessage+"\n"+"next alarm:"+AlarmGloble.rept[alarmRept]+" ";
}
}
textViewMessage.setText(mMessage);
if(mMp3.equals(AlarmGloble.RANDOM)){
File file=new File(AlarmGloble.ROOT_MUSIC);
RandomMp3 rm=new RandomMp3(file);
if (rm.getCount()>0)
mMp3=rm.getFile();
else
mMp3="";
}
else {
if(mMp3.equals(AlarmGloble.DEFAULT)){
mMp3=getDefaultMP3();
}
else{
String[] s=mMp3.split("/");
textViewSongName.setText(s[s.length-1]);
}
}
if (mMp3.equals("")){
textViewSongName.setText(mMp3);
}
else {
String[] s=mMp3.split("/");
textViewSongName.setText(s[s.length-1]);
}
(LinearLayout)findViewById(R.id.alarm_alertLinearLayoutButtons);
linearLayoutButtons.requestFocus();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
Log.d(“AA”,“onCreate”);
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm\u alert);
AlarmGloble.dbHelper=新的dbHelper(这是AlarmGloble.DB_名称,AlarmGloble.DB_版本);
AlarmGloble.dbLib=新数据库库(AlarmGloble.dbHelper);
settingFromId();
FindView();
setListener();
updateView();
mVibrator=(可控震源)getSystemService(Context.可控震源\u服务);
设置系统容量(0);
//通过处理器播放mp3
mHandler.sendMessage(mHandler.obtainMessage(PLAY));
}
私有void updateView(){
TextView textViewSnooze=(TextView)findViewById(R.id.alarm\u alertTextViewSnooze);
如果(MP3测试){
textViewSnooze.setVisibility(View.INVISIBLE);
喷丝头休眠。设置可见性(视图。不可见);
buttonClose.setVisibility(视图不可见);
buttonEdit.setVisibility(视图不可见);
}
否则{
textViewSnooze.setVisibility(View.VISIBLE);
喷丝头休眠设置可见性(View.VISIBLE);
buttonClose.setVisibility(View.VISIBLE);
buttonEdit.setVisibility(View.VISIBLE);
如果(AlarmReport我在AlarmAlert活动中只能看到两个按钮buttonClose和buttonEdit,因此我假设没有显示的3个按钮在alarm_alert LinearLayeBurttons.xml中,应该在alarm_alert.xml中重复使用
<include layout="@layout/alarm_alertLinearLayoutButtons"/>
您在函数settingFromId()中初始化“mp3Test”的值;我得到了一些信息。如果我的应用程序没有在后台运行(单击菜单按钮,从列表中删除应用程序),则活动从onReceive()开始,按钮将不会显示。如果应用程序仍在后台运行,则一切都很完美。我发布了我的alarm_alert.xml,LinearLayBurttons是包含3个按钮的LinearLayBurttons。requestFocus();我尝试获取焦点以查看按钮是否会显示。我注意到的一件事是,您正在执行Log.d(“AA”,“onCreate”);在super.onCreate(savedInstanceState)之前,最好先让超类执行其工作,然后再执行任何操作。请尝试在调用super.Ref之后移动日志:“注意:这些生命周期方法的实现必须始终在执行任何工作之前调用超类实现,如上面的示例所示。”
<include layout="@layout/alarm_alertLinearLayoutButtons"/>
linearLayoutButtons = (LinearLayout)findViewById(R.id.alarm_alertLinearLayoutButtons);
linearLayoutButtons.requestFocus();