作者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)
推 lovelycateye:ContactTimer.schedule(task, 1000, 1000) 改成 05/21 10:29
→ lovelycateye:ContactTimer.schedule(task, 1000) 有人猜對了 05/21 10:29
→ lovelycateye:程式只會照你所寫的跑,一秒閃一次啊XD 05/21 10:30
→ lovelycateye:BTW,你寫java的習慣好差= = 05/21 10:30
→ fake01:原來是我搞不清楚 (task,1000,1000) 和 (task ,1000) 05/21 12:43
→ fake01:的差異 05/21 12:43
→ fake01:l大可以給我一些 習慣的建議嗎,讓人看懂程式碼 05/21 12:44
→ fake01:也是很重要的功夫 05/21 12:44
→ fake01:感謝 會很有幫助 05/21 16:32
推 gpc:我猜對了嗎XD 05/22 02:40
→ fake01:但是若改成L大所講,會造成我若有新增刪除Dialog內容 05/22 10:50
→ fake01:再次打開Dialog 會無法及時顯示資料 05/22 10:50
→ fake01:需要等個幾秒才能正常顯示,就好像handler 沒有一秒執行一次 05/22 10:51
→ fake01:handler我是用來呼叫其他.activity回傳值 05/22 10:52
→ lovelycateye:你要不要考慮另外開一篇問啊?你架構應該很有問題 05/22 11:50
→ fake01:目前想到用別種方式處理,如還有問題會在開一篇 佔空間 XD 05/22 12:00