作者fake01 (code)
看板AndroidDev
标题Re: [问题] 使用Handler+AlertDialog 画面闪烁
时间Tue May 21 00:39:05 2013
因为用讲解的方式有点难理解我的问题,所以小弟放上一些code,更容易让人了解好了
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContactTimer = new Timer();
ContactsetTimerTask();
delBtn = (Button) findViewById(R.id.delBtn);
delBtn.setOnClickListener(del);
Intent intent2=new Intent();
intent2.setClass(MainActivity.this,fileread.class);
startActivityForResult(intent2, ReadAllData);
}
private OnClickListener del = new OnClickListener(){
public void onClick(View v) {
if (ContactTimer != null) {
ContactTimer.cancel();
ContactTimer = null;
}
else
{
ContactTimer = new Timer();
ContactsetTimerTask();
}
// 一样利用AlertDialog 让使用者输入 + 多选功能
for(int i=0;i<names.length;i++)isChecked[i]=false;
Builder DelAlertDialog =
new AlertDialog.Builder(MainActivity.this);
DelAlertDialog.setTitle("Del").setMultiChoiceItems(
names, isChecked, onChoice)
.setPositiveButton("Delete", showSelectedResult)
.setNegativeButton("Discard", null).show();
}
private OnMultiChoiceClickListener onChoice = new
OnMultiChoiceClickListener(){
............
}
DialogInterface.OnClickListener showSelectedResult = new
DialogInterface.OnClickListener(){
............
}
private void ContactsetTimerTask() {
ContactTimer.schedule(new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
ContactTimerHandler.sendMessage(message);
}
}, 1000, 1000);
}
private Handler ContactTimerHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
int msgId = msg.what;
switch (msgId) {
case 1:
Intent intent=new Intent();
intent.setClass(MainActivity.this,fileread.class);
startActivityForResult(intent, ReadAllData);
break;
default:
break;
}
}
};
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ReadAllData:
names= data.getExtras().getString("SDstr").split("\n");
isChecked = new boolean[names.length];
break;
}
}
希望放上code,能更快的解决问题,谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.0.248.229
※ 编辑: fake01 来自: 123.0.248.229 (05/21 00:40)
※ 编辑: fake01 来自: 123.0.248.229 (05/21 00:44)
1F:推 lovelycateye:ContactTimer.schedule(task, 1000, 1000) 改成 05/21 10:29
2F:→ lovelycateye:ContactTimer.schedule(task, 1000) 有人猜对了 05/21 10:29
3F:→ lovelycateye:程式只会照你所写的跑,一秒闪一次啊XD 05/21 10:30
4F:→ lovelycateye:BTW,你写java的习惯好差= = 05/21 10:30
5F:→ fake01:原来是我搞不清楚 (task,1000,1000) 和 (task ,1000) 05/21 12:43
6F:→ fake01:的差异 05/21 12:43
7F:→ fake01:l大可以给我一些 习惯的建议吗,让人看懂程式码 05/21 12:44
8F:→ fake01:也是很重要的功夫 05/21 12:44
10F:→ fake01:感谢 会很有帮助 05/21 16:32
11F:推 gpc:我猜对了吗XD 05/22 02:40
12F:→ fake01:但是若改成L大所讲,会造成我若有新增删除Dialog内容 05/22 10:50
13F:→ fake01:再次打开Dialog 会无法及时显示资料 05/22 10:50
14F:→ fake01:需要等个几秒才能正常显示,就好像handler 没有一秒执行一次 05/22 10:51
15F:→ fake01:handler我是用来呼叫其他.activity回传值 05/22 10:52
16F:→ lovelycateye:你要不要考虑另外开一篇问啊?你架构应该很有问题 05/22 11:50
17F:→ fake01:目前想到用别种方式处理,如还有问题会在开一篇 占空间 XD 05/22 12:00