1@Override
2 public boolean onKeyDown(int keyCode, KeyEvent event)
3 {
4 if ((keyCode == KeyEvent.KEYCODE_BACK))
5 {
6 final Intent intent = new Intent();
7 intent.putParcelableArrayListExtra ("driverlist", (ArrayList<? extends Parcelable>) m_driverlist);
8 intent.putExtra("planid", mPlanID);
9 setResult(RESULT_OK,intent);
10 finish();
11 }
12 return true;
13 }
gleiches Ergebnis. Ich muss den Button immer noch zweimal drücken, bis die Activity sich beendet. Auch mein Result ist weiterhin null

Anbei mal etwas mehr Code:
1public void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.calendar);
4 mContext = this;
5 extras = getIntent().getExtras();
6
7 month = Calendar.getInstance();
8 m_driverlist = (ArrayList<Driver>) extras.get("driverlist");
9 adapter = new CalendarPlanAdapter(this, month);
10 items = new ArrayList<CalendearItem>();
11 mPlanID = extras.getInt("planid");
12
13 GridView gridview = (GridView) findViewById(R.id.gridview);
14 gridview.setAdapter(adapter);
15
16 handler = new Handler();
17 handler.post(calendarUpdater);
18
19
20 TextView title = (TextView) findViewById(R.id.title);
21 title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));
22
23 TextView previous = (TextView) findViewById(R.id.previous);
24 previous.setOnClickListener(new OnClickListener() {
25
26 @Override
27 public void onClick(View v) {
28 if(month.get(Calendar.MONTH)== month.getActualMinimum(Calendar.MONTH)) {
29 month.set((month.get(Calendar.YEAR)-1),month.getActualMaximum(Calendar.MONTH),1);
30 } else {
31 month.set(Calendar.MONTH,month.get(Calendar.MONTH)-1);
32 }
33 refreshCalendar();
34 }
35 });
36
37 TextView next = (TextView) findViewById(R.id.next);
38 next.setOnClickListener(new OnClickListener() {
39
40 @Override
41 public void onClick(View v) {
42 if(month.get(Calendar.MONTH)== month.getActualMaximum(Calendar.MONTH)) {
43 month.set((month.get(Calendar.YEAR)+1),month.getActualMinimum(Calendar.MONTH),1);
44 } else {
45 month.set(Calendar.MONTH,month.get(Calendar.MONTH)+1);
46 }
47 refreshCalendar();
48
49 }
50 });
51
52 gridview.setOnItemClickListener(new OnItemClickListener() {
53 public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
54 TextView date = (TextView)v.findViewById(R.id.date);
55 String day = date.getText().toString();
56 CalendearItem item = (CalendearItem) parent.getItemAtPosition(Integer.valueOf(day));
57 if(day.length()<2){
58 day = "0" + day;
59 }
60 if(date instanceof TextView && !date.getText().equals("")) {
61 if(item !=null){
62 ArrayList<Driver> driverlist = new ArrayList<Driver>();
63 driverlist.add(item.getDriver());
64 Intent intent = new Intent(mContext, ChangeDrive.class);
65 intent.putParcelableArrayListExtra ("alldriverlist", (ArrayList<? extends Parcelable>) m_driverlist);
66 intent.putParcelableArrayListExtra ("driverlist", (ArrayList<? extends Parcelable>) driverlist);
67 intent.putExtra("date", android.text.format.DateFormat.format(item.getDay() + "." + "MM.yyyy", month));
68 intent.putExtra("planid", mPlanID);
69 startActivityForResult(intent, CHANGE_DRIVER_REQUEST);
70 }else{
71 Intent intent = new Intent(mContext, ChangeDrive.class);
72 intent.putParcelableArrayListExtra ("alldriverlist", (ArrayList<? extends Parcelable>) m_driverlist);
73 intent.putExtra("date", android.text.format.DateFormat.format(day + "." + "MM.yyyy", month));
74 intent.putExtra("planid", mPlanID);
75 startActivityForResult(intent, CHANGE_DRIVER_REQUEST);
76
77 }
78 finish();
79 }
80
81 }
82 });
83 }
84
85 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
86 super.onActivityResult(requestCode, resultCode, data);
87
88 if (requestCode == CHANGE_DRIVER_REQUEST) {
89 if (resultCode == RESULT_OK) {
90 extras = data.getExtras();
91 m_driverlist.clear();
92 m_driverlist = (ArrayList<Driver>) extras.get("list");
93 }
94 }
95 }
96 private void setItems() {
97 Iterator it = m_driverlist.iterator();
98 while(it.hasNext()){
99 int i = 0;
100 Driver dr = (Driver) it.next();
101 Iterator at = dr.getDrivingDates().iterator();
102 while(at.hasNext()){
103 String date = (String) at.next();
104 String[] dateArray = date.split("-");
105
106 String day = dateArray[2];
107 String rmonth = dateArray[1];
108 String cmonth = String.valueOf(month.get(Calendar.MONTH)+1);
109 if(cmonth.length()==1){
110 cmonth = "0" + cmonth;
111 }
112 int year= new Integer(dateArray[0]);
113 int cyear = month.get(Calendar.YEAR);
114
115 if(rmonth.equals(cmonth) && year == cyear){
116 CalendearItem calitem = new CalendearItem(day, dr);
117 items.add(calitem);
118 }
119 }
120 i++;
121 }
122 }
123
124 public void refreshCalendar()
125 {
126 TextView title = (TextView) findViewById(R.id.title);
127 adapter.refreshDays();
128 adapter.notifyDataSetChanged();
129 handler.post(calendarUpdater); // generate some random calendar items
130 title.setText(android.text.format.DateFormat.format("MMMM yyyy", month));
131 }
132
133
134
135 public Runnable calendarUpdater = new Runnable() {
136
137 @Override
138 public void run() {
139 items.clear();
140 setItems();
141 adapter.setItems(items);
142 adapter.notifyDataSetChanged();
143 }
144 };
145
146
147 @Override
148 protected void onResume() {
149 // TODO Auto-generated method stub
150 super.onResume();
151 refreshCalendar();
152 }
153
154
155
156 @Override
157 public boolean onKeyDown(int keyCode, KeyEvent event)
158 {
159 if ((keyCode == KeyEvent.KEYCODE_BACK))
160 {
161 final Intent intent = new Intent();
162 intent.putParcelableArrayListExtra ("driverlist", (ArrayList<? extends Parcelable>) m_driverlist);
163 intent.putExtra("planid", mPlanID);
164 setResult(RESULT_OK,intent);
165 finish();
166 }
167 return true;
168 }
169
170
171}
Gruß