Java Android ListActivity-在对话框回调循环后添加行
所以我正在做一个项目,制作一个闹钟应用程序。 它仍然是一个工作进展,我只是Android开发的初学者,我现在在课程的中间,所以请原谅我,如果代码似乎效率低下。作为一个欣欣向荣的开发者,我将非常感谢任何建议 说到点子上。我的问题是,当我添加报警时,在设置时间并按下更改报警时间按钮后,会添加两行。 调试器显示finalizeAlarm被调用了两次,我不知道为什么 主要活动:Java Android ListActivity-在对话框回调循环后添加行,java,android,list,dialog,android-arrayadapter,Java,Android,List,Dialog,Android Arrayadapter,所以我正在做一个项目,制作一个闹钟应用程序。 它仍然是一个工作进展,我只是Android开发的初学者,我现在在课程的中间,所以请原谅我,如果代码似乎效率低下。作为一个欣欣向荣的开发者,我将非常感谢任何建议 说到点子上。我的问题是,当我添加报警时,在设置时间并按下更改报警时间按钮后,会添加两行。 调试器显示finalizeAlarm被调用了两次,我不知道为什么 主要活动: package com.nickholden.lazyalarm; import android.app.FragmentM
package com.nickholden.lazyalarm;
import android.app.FragmentManager;
import android.app.ListActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends ListActivity implements DialogCallBack{
static final int TIME_DIALOG_ID = 1337;
ArrayList<Alarm> alarmList = new ArrayList<Alarm>();
int pos;
Button btnAlarmSet;
TextView txtAlarmTime;
TimePicker timePicker;
int hour;
int minutes;
Button btnChangeTime;
MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(android.R.id.list);
listView.setBackgroundColor(Color.GREEN);
adapter = new MyAdapter(this, R.layout.activity_alarm,
android.R.id.text1, alarmList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(listener);
}
private OnItemClickListener listener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
pos = position;
}
};
// Add a new alarm
public void btnAddNewAlarm(View view) {
FragmentManager fragmentManager = getFragmentManager();
AlarmDialogFragment alarmDialogFragment = new AlarmDialogFragment(this, new Intent());
alarmDialogFragment.setCancelable(false);
alarmDialogFragment.show(fragmentManager, "set_alarm_time");
}
public static String pad(int time) {
if (time >= 10)
return String.valueOf(time);
else
return "0" + String.valueOf(time);
}
// Delete the entire row
public void btnDelete(final View view) {
// Create delete confirmation dialog here
alarmList.remove(pos);
adapter.notifyDataSetChanged();
Toast.makeText(this, "Alarm Removed", Toast.LENGTH_SHORT).show();
}
public void btnClearAll(View view) {
// Create delete confirmation dialog here
alarmList.removeAll(alarmList);
adapter.notifyDataSetChanged();
}
@Override
public void finalizeAlarm(Intent intent) {
Alarm alarm = (Alarm) intent.getSerializableExtra("alarm");
adapter.add(alarm);
}
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
interface DialogCallBack{
public void finalizeAlarm(Intent intent);
}
警报:
package com.nickholden.lazyalarm;
import java.io.Serializable;
import java.sql.Date;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
public class Alarm implements Serializable {
public static final long serialVersionUID = 12345L;
public static int lastIndex = 0;
}
好像是个虫子。看到这个了吗
加
以前
callBack.finalizeAlarm(intent);
package com.nickholden.lazyalarm;
import java.io.Serializable;
import java.sql.Date;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
public class Alarm implements Serializable {
public static final long serialVersionUID = 12345L;
public static int lastIndex = 0;
}
if (view.isshown())
callBack.finalizeAlarm(intent);