Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android ListActivity-在对话框回调循环后添加行_Java_Android_List_Dialog_Android Arrayadapter - Fatal编程技术网

Java Android ListActivity-在对话框回调循环后添加行

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

所以我正在做一个项目,制作一个闹钟应用程序。 它仍然是一个工作进展,我只是Android开发的初学者,我现在在课程的中间,所以请原谅我,如果代码似乎效率低下。作为一个欣欣向荣的开发者,我将非常感谢任何建议

说到点子上。我的问题是,当我添加报警时,在设置时间并按下更改报警时间按钮后,会添加两行。 调试器显示finalizeAlarm被调用了两次,我不知道为什么

主要活动:

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);