我无法传递和检索额外的意图布尔值
I cannot pass and retrieve intent boolean extra
我试图让我的代码通过 intent 额外传递布尔值,但我 fail.I 调试并观察到我的 activity "B" 将 EXTRA_IS_ADDED
的值分配为 true
,正如我想要的那样,但是当我调用 startActivity(intent)
时,在我的 activity "A" 中我无法正确使用此数据来分配 isAdded
的值。
这是我所说的 activity A :
package com.example.recepinanc.whenfreedeneme;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
/**
* Created by recepinanc on 10/10/15.
*/
public class WorksActivity extends AppCompatActivity {
private Boolean isAdded;
private ListView todoListView;
private ArrayList<Work> works;
private Context mContext;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private String title;
private String category;
//TODO Add school social todo overall buttons.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.works_activity_layout);
Log.i("WorksActivity", "works activity'te");
mContext = getApplicationContext();
works = new ArrayList<Work>();
}
@Override
protected void onResume() {
super.onResume();
isAdded = getIntent().getBooleanExtra(AddWorkActivity.EXTRA_IS_ADDED, false);
year = getIntent().getIntExtra(AddWorkActivity.EXTRA_YEAR, 0);
month = getIntent().getIntExtra(AddWorkActivity.EXTRA_MONTH, 0);
day = getIntent().getIntExtra(AddWorkActivity.EXTRA_DAY,0);
hour = getIntent().getIntExtra(AddWorkActivity.EXTRA_HOUR,0);
minute = getIntent().getIntExtra(AddWorkActivity.EXTRA_MINUTE,0);
title = getIntent().getStringExtra(AddWorkActivity.EXTRA_TITLE);
category = getIntent().getStringExtra(AddWorkActivity.EXTRA_CATEGORY);
//TODO isAdded True pass edilemiyor
Log.i("is_Added",isAdded.toString());
if (isAdded) {
//TODO examine the true isAdded case.
Log.i("isAddedTrue",isAdded.toString());
Work work = new Work();
Log.i("isAddedTrue","work creationdan sonra");
work.setmTitle(title);
work.setmCategory(category);
work.setmYear(year);
work.setmMonth(monthConverter(month));
work.setmDay(day);
work.setmHour(hour);
work.setmMinute(minuteConverter(minute));
Log.i("isAddedTrue", "work.setlerden sonra");
//works.add(work);
updateArray(works, work);
Log.i("isAddedTrue", "work.array addden sonra");
Toast.makeText(WorksActivity.this, "NEWBIE ADDED.", Toast.LENGTH_SHORT).show();
isAdded = false;
Log.i("isAddedTrue", "work is added false setden sivvaliiiiiim sonra");
}
Log.i("isAddedTrue", "listview found");
todoListView = (ListView) findViewById(R.id.listView);
Log.i("isAddedTrue", "listview founddan sonra");
todoListView.setAdapter(new WorkAdapter(getApplicationContext(), works));
Log.i("isAddedTrue", "listAdapter setten sonra");
}
public void updateArray(ArrayList<Work> works, Work work) {
//Add a new item add its date and update the array
works.add(work);
Toast.makeText(WorksActivity.this, "A new work is created! " +
"\n" + work.getmTitle() +
"\n" + work.getmCategory() +
"\n" + work.getmDay() +
"\n" + work.getmMonth() +
"\n" + work.getmYear() +
"\n" + work.getmHour() +
"\n" + work.getmMinute(), Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_action:
Intent intent = new Intent(WorksActivity.this, AddWorkActivity.class);
Log.i("WorksActivity", "Created intent");
startActivity(intent);
Log.i("WorksActivity", "Started Activity");
break;
default:
Log.e("WorksActivity", "INVALID BUTTON");
break;
}
return true;
}
public String monthConverter(int month) {
switch (month + 1) {
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
return "UNKNOWN";
}
}
public String minuteConverter(int minute) {
if (minute / 10 <= 0)
return "0" + minute;
else
return minute + "";
}
}
这是我的第二个 -B- activity :
package com.example.recepinanc.whenfreedeneme;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
/**
* Created by recepinanc on 11/10/15.
*/
public class AddWorkActivity extends AppCompatActivity {
public static final String EXTRA_TITLE = "title";
public static final String EXTRA_CATEGORY = "category";
public static final String EXTRA_YEAR = "year";
public static final String EXTRA_MONTH = "month";
public static final String EXTRA_DAY = "day";
public static final String EXTRA_HOUR = "hour";
public static final String EXTRA_MINUTE = "minute";
public static final String EXTRA_IS_ADDED = "isAdded";
static final int DATE_DIALOG_ID = 999;
static final int TIME_DIALOG_ID = 111;
private EditText title;
private RadioGroup categoryRadioGroup;
private TextView datePicker;
private TextView timePicker;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private boolean is24HourView = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_work_acitivity_layout);
Log.i("AddWorkActivity","addwork'te");
title = (EditText) findViewById(R.id.todoTitle_editText);
categoryRadioGroup = (RadioGroup) findViewById(R.id.category_radioGroup);
datePicker = (TextView) findViewById(R.id.dateSpinner_textView);
timePicker = (TextView) findViewById(R.id.timeSpinner_textView);
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
setDateOnView();
datePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//todo call the create dialog method here.
showDialog(DATE_DIALOG_ID);
}
});
timePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//todo call create dialog for time picker.
showDialog(TIME_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
//set date as the current date
return new DatePickerDialog(this, dateSetListener, year, month, day);
case TIME_DIALOG_ID:
//set time as the current time
return new TimePickerDialog(this, timeSetListener, hour, minute, is24HourView);
}
return null;
}
private DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
//assign selected values
year = selectedYear;
month = selectedMonth;
day = selectedDay;
//update the textView to selected date
setDateAsText(datePicker);
}
};
private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
//assign the selected time
hour = selectedHour;
minute = selectedMinute;
setTimeAsText(timePicker);
}
};
private void setDateOnView() {
setDateAsText(datePicker);
setTimeAsText(timePicker);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle item selection
switch (item.getItemId()) {
case R.id.cancel_action:
//TODO Make this return to its activity
finish();
break;
case R.id.save_action:
//TODO Get info and pass it to the activity's updateArrayMethodString category = "";
String category = "";
int checkedRadioID = categoryRadioGroup.getCheckedRadioButtonId();
switch (checkedRadioID) {
case R.id.todo_radioButton:
category = "To-Do";
break;
case R.id.school_radioButton:
category = "School";
break;
case R.id.social_radioButton:
category = "Social";
break;
default:
Log.e("WorksActivity", "Unexpected RadioButton ID");
break;
}
//pass data via intent
Intent intent = new Intent(getBaseContext(), WorksActivity.class);
intent.putExtra(EXTRA_TITLE, title.getText().toString());
intent.putExtra(EXTRA_CATEGORY, category);
intent.putExtra(EXTRA_HOUR, hour);
intent.putExtra(EXTRA_MINUTE, minute);
intent.putExtra(EXTRA_YEAR, year);
intent.putExtra(EXTRA_MONTH, month);
intent.putExtra(EXTRA_DAY, day);
intent.putExtra(EXTRA_IS_ADDED, true);
Log.i("Addworkacitivty", "add work activity intent");
startActivity(intent);
break;
default:
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_add_activity, menu);
return true;
}
public String monthConverter(int month) {
switch (month + 1) {
case 1:
return "JANUARY";
case 2:
return "FEBRUARY";
case 3:
return "MARCH";
case 4:
return "APRIL";
case 5:
return "MAYY";
case 6:
return "JUNE";
case 7:
return "JULY";
case 8:
return "AUGUST";
case 9:
return "SEPTEMBER";
case 10:
return "OCTOBER";
case 11:
return "NOVEMBER";
case 12:
return "DECEMBER";
default:
return "UNKNOWN";
}
}
public String minuteConverter(int minute) {
if (minute / 10 <= 0)
return "0" + minute;
else
return minute + "";
}
public void setDateAsText(TextView datePicker) {
datePicker.setText(new StringBuilder().append(day).append(" ")
.append(monthConverter(month)).append(" ").append(year));
}
public void setTimeAsText(TextView timePicker) {
timePicker.setText(new StringBuilder().append(hour).append(":").append(minuteConverter(minute)));
}
}
这是我的适配器:
package com.example.recepinanc.whenfreedeneme;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by recepinanc on 11/10/15.
*/
public class WorkAdapter extends BaseAdapter {
private Context mContext;
ArrayList<Work> works;
public WorkAdapter(Context applicationContext, ArrayList<Work> works) {
this.mContext = applicationContext;
this.works = works;
}
@Override
public int getCount() {
return works.size();
}
@Override
public Object getItem(int position) {
return works.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Upgrade this to view holder.
View v;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = layoutInflater.inflate(R.layout.work_item_layout, parent, false);
TextView title = (TextView) v.findViewById(R.id.title_textView);
TextView category = (TextView) v.findViewById(R.id.category_textView);
TextView date = (TextView) v.findViewById(R.id.date_textView);
TextView time = (TextView) v.findViewById(R.id.time_textView);
Work work = works.get(position);
titleResizer(title, work.getmTitle());
category.setText(work.getmCategory());
date.setText(new StringBuilder().append(work.getmDay()).append(" ")
.append(work.getmMonth()).append(" ").append(work.getmYear()));
time.setText(new StringBuilder().append(work.getmHour())
.append(":").append(work.getmMinute()));
} else {
v = convertView;
}
return v;
}
public void titleResizer(TextView title, String titleText){
if (titleText.length() > 25)
title.setTextSize(12);
else if (titleText.length() > 20)
title.setTextSize(15);
else if (titleText.length() > 15 )
title.setTextSize(18);
else if (titleText.length() > 10 )
title.setTextSize(20);
else
title.setTextSize(25);
title.setText(titleText);
}
}
注意 getBoolean 返回的是布尔值(原始类型)而不是布尔值。
来自文档:
public boolean getBooleanExtra (String name, boolean defaultValue)
Added in API level 1 Retrieve extended data from the intent.
Parameters name The name of the desired item. defaultValue the value
to be returned if no value of the desired type is stored with the
given name. Returns the value of an item that previously added with
putExtra() or the default value if none was found. See Also
putExtra(String, boolean)
改变
private Boolean isAdded;
到
private boolean isAdded;
我已将我的原始评论移至答案,以便您可以将问题标记为已解决。 ;)
private Boolean isAdded;
是 Boolean
(对象)而不是 boolean
(原始类型),因此这里可能会发生一些自动装箱和拆箱。我找不到其他任何东西,但可能值得尝试将其更改为 private boolean isAdded;
我试图让我的代码通过 intent 额外传递布尔值,但我 fail.I 调试并观察到我的 activity "B" 将 EXTRA_IS_ADDED
的值分配为 true
,正如我想要的那样,但是当我调用 startActivity(intent)
时,在我的 activity "A" 中我无法正确使用此数据来分配 isAdded
的值。
这是我所说的 activity A :
package com.example.recepinanc.whenfreedeneme;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
/**
* Created by recepinanc on 10/10/15.
*/
public class WorksActivity extends AppCompatActivity {
private Boolean isAdded;
private ListView todoListView;
private ArrayList<Work> works;
private Context mContext;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private String title;
private String category;
//TODO Add school social todo overall buttons.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.works_activity_layout);
Log.i("WorksActivity", "works activity'te");
mContext = getApplicationContext();
works = new ArrayList<Work>();
}
@Override
protected void onResume() {
super.onResume();
isAdded = getIntent().getBooleanExtra(AddWorkActivity.EXTRA_IS_ADDED, false);
year = getIntent().getIntExtra(AddWorkActivity.EXTRA_YEAR, 0);
month = getIntent().getIntExtra(AddWorkActivity.EXTRA_MONTH, 0);
day = getIntent().getIntExtra(AddWorkActivity.EXTRA_DAY,0);
hour = getIntent().getIntExtra(AddWorkActivity.EXTRA_HOUR,0);
minute = getIntent().getIntExtra(AddWorkActivity.EXTRA_MINUTE,0);
title = getIntent().getStringExtra(AddWorkActivity.EXTRA_TITLE);
category = getIntent().getStringExtra(AddWorkActivity.EXTRA_CATEGORY);
//TODO isAdded True pass edilemiyor
Log.i("is_Added",isAdded.toString());
if (isAdded) {
//TODO examine the true isAdded case.
Log.i("isAddedTrue",isAdded.toString());
Work work = new Work();
Log.i("isAddedTrue","work creationdan sonra");
work.setmTitle(title);
work.setmCategory(category);
work.setmYear(year);
work.setmMonth(monthConverter(month));
work.setmDay(day);
work.setmHour(hour);
work.setmMinute(minuteConverter(minute));
Log.i("isAddedTrue", "work.setlerden sonra");
//works.add(work);
updateArray(works, work);
Log.i("isAddedTrue", "work.array addden sonra");
Toast.makeText(WorksActivity.this, "NEWBIE ADDED.", Toast.LENGTH_SHORT).show();
isAdded = false;
Log.i("isAddedTrue", "work is added false setden sivvaliiiiiim sonra");
}
Log.i("isAddedTrue", "listview found");
todoListView = (ListView) findViewById(R.id.listView);
Log.i("isAddedTrue", "listview founddan sonra");
todoListView.setAdapter(new WorkAdapter(getApplicationContext(), works));
Log.i("isAddedTrue", "listAdapter setten sonra");
}
public void updateArray(ArrayList<Work> works, Work work) {
//Add a new item add its date and update the array
works.add(work);
Toast.makeText(WorksActivity.this, "A new work is created! " +
"\n" + work.getmTitle() +
"\n" + work.getmCategory() +
"\n" + work.getmDay() +
"\n" + work.getmMonth() +
"\n" + work.getmYear() +
"\n" + work.getmHour() +
"\n" + work.getmMinute(), Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_action:
Intent intent = new Intent(WorksActivity.this, AddWorkActivity.class);
Log.i("WorksActivity", "Created intent");
startActivity(intent);
Log.i("WorksActivity", "Started Activity");
break;
default:
Log.e("WorksActivity", "INVALID BUTTON");
break;
}
return true;
}
public String monthConverter(int month) {
switch (month + 1) {
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
return "UNKNOWN";
}
}
public String minuteConverter(int minute) {
if (minute / 10 <= 0)
return "0" + minute;
else
return minute + "";
}
}
这是我的第二个 -B- activity :
package com.example.recepinanc.whenfreedeneme;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
/**
* Created by recepinanc on 11/10/15.
*/
public class AddWorkActivity extends AppCompatActivity {
public static final String EXTRA_TITLE = "title";
public static final String EXTRA_CATEGORY = "category";
public static final String EXTRA_YEAR = "year";
public static final String EXTRA_MONTH = "month";
public static final String EXTRA_DAY = "day";
public static final String EXTRA_HOUR = "hour";
public static final String EXTRA_MINUTE = "minute";
public static final String EXTRA_IS_ADDED = "isAdded";
static final int DATE_DIALOG_ID = 999;
static final int TIME_DIALOG_ID = 111;
private EditText title;
private RadioGroup categoryRadioGroup;
private TextView datePicker;
private TextView timePicker;
private int year;
private int month;
private int day;
private int hour;
private int minute;
private boolean is24HourView = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_work_acitivity_layout);
Log.i("AddWorkActivity","addwork'te");
title = (EditText) findViewById(R.id.todoTitle_editText);
categoryRadioGroup = (RadioGroup) findViewById(R.id.category_radioGroup);
datePicker = (TextView) findViewById(R.id.dateSpinner_textView);
timePicker = (TextView) findViewById(R.id.timeSpinner_textView);
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
setDateOnView();
datePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//todo call the create dialog method here.
showDialog(DATE_DIALOG_ID);
}
});
timePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//todo call create dialog for time picker.
showDialog(TIME_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
//set date as the current date
return new DatePickerDialog(this, dateSetListener, year, month, day);
case TIME_DIALOG_ID:
//set time as the current time
return new TimePickerDialog(this, timeSetListener, hour, minute, is24HourView);
}
return null;
}
private DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
//assign selected values
year = selectedYear;
month = selectedMonth;
day = selectedDay;
//update the textView to selected date
setDateAsText(datePicker);
}
};
private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) {
//assign the selected time
hour = selectedHour;
minute = selectedMinute;
setTimeAsText(timePicker);
}
};
private void setDateOnView() {
setDateAsText(datePicker);
setTimeAsText(timePicker);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// handle item selection
switch (item.getItemId()) {
case R.id.cancel_action:
//TODO Make this return to its activity
finish();
break;
case R.id.save_action:
//TODO Get info and pass it to the activity's updateArrayMethodString category = "";
String category = "";
int checkedRadioID = categoryRadioGroup.getCheckedRadioButtonId();
switch (checkedRadioID) {
case R.id.todo_radioButton:
category = "To-Do";
break;
case R.id.school_radioButton:
category = "School";
break;
case R.id.social_radioButton:
category = "Social";
break;
default:
Log.e("WorksActivity", "Unexpected RadioButton ID");
break;
}
//pass data via intent
Intent intent = new Intent(getBaseContext(), WorksActivity.class);
intent.putExtra(EXTRA_TITLE, title.getText().toString());
intent.putExtra(EXTRA_CATEGORY, category);
intent.putExtra(EXTRA_HOUR, hour);
intent.putExtra(EXTRA_MINUTE, minute);
intent.putExtra(EXTRA_YEAR, year);
intent.putExtra(EXTRA_MONTH, month);
intent.putExtra(EXTRA_DAY, day);
intent.putExtra(EXTRA_IS_ADDED, true);
Log.i("Addworkacitivty", "add work activity intent");
startActivity(intent);
break;
default:
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_add_activity, menu);
return true;
}
public String monthConverter(int month) {
switch (month + 1) {
case 1:
return "JANUARY";
case 2:
return "FEBRUARY";
case 3:
return "MARCH";
case 4:
return "APRIL";
case 5:
return "MAYY";
case 6:
return "JUNE";
case 7:
return "JULY";
case 8:
return "AUGUST";
case 9:
return "SEPTEMBER";
case 10:
return "OCTOBER";
case 11:
return "NOVEMBER";
case 12:
return "DECEMBER";
default:
return "UNKNOWN";
}
}
public String minuteConverter(int minute) {
if (minute / 10 <= 0)
return "0" + minute;
else
return minute + "";
}
public void setDateAsText(TextView datePicker) {
datePicker.setText(new StringBuilder().append(day).append(" ")
.append(monthConverter(month)).append(" ").append(year));
}
public void setTimeAsText(TextView timePicker) {
timePicker.setText(new StringBuilder().append(hour).append(":").append(minuteConverter(minute)));
}
}
这是我的适配器:
package com.example.recepinanc.whenfreedeneme;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
/**
* Created by recepinanc on 11/10/15.
*/
public class WorkAdapter extends BaseAdapter {
private Context mContext;
ArrayList<Work> works;
public WorkAdapter(Context applicationContext, ArrayList<Work> works) {
this.mContext = applicationContext;
this.works = works;
}
@Override
public int getCount() {
return works.size();
}
@Override
public Object getItem(int position) {
return works.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Upgrade this to view holder.
View v;
if (convertView == null) {
LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = layoutInflater.inflate(R.layout.work_item_layout, parent, false);
TextView title = (TextView) v.findViewById(R.id.title_textView);
TextView category = (TextView) v.findViewById(R.id.category_textView);
TextView date = (TextView) v.findViewById(R.id.date_textView);
TextView time = (TextView) v.findViewById(R.id.time_textView);
Work work = works.get(position);
titleResizer(title, work.getmTitle());
category.setText(work.getmCategory());
date.setText(new StringBuilder().append(work.getmDay()).append(" ")
.append(work.getmMonth()).append(" ").append(work.getmYear()));
time.setText(new StringBuilder().append(work.getmHour())
.append(":").append(work.getmMinute()));
} else {
v = convertView;
}
return v;
}
public void titleResizer(TextView title, String titleText){
if (titleText.length() > 25)
title.setTextSize(12);
else if (titleText.length() > 20)
title.setTextSize(15);
else if (titleText.length() > 15 )
title.setTextSize(18);
else if (titleText.length() > 10 )
title.setTextSize(20);
else
title.setTextSize(25);
title.setText(titleText);
}
}
注意 getBoolean 返回的是布尔值(原始类型)而不是布尔值。
来自文档:
public boolean getBooleanExtra (String name, boolean defaultValue)
Added in API level 1 Retrieve extended data from the intent.
Parameters name The name of the desired item. defaultValue the value to be returned if no value of the desired type is stored with the given name. Returns the value of an item that previously added with putExtra() or the default value if none was found. See Also putExtra(String, boolean)
改变
private Boolean isAdded;
到
private boolean isAdded;
我已将我的原始评论移至答案,以便您可以将问题标记为已解决。 ;)
private Boolean isAdded;
是 Boolean
(对象)而不是 boolean
(原始类型),因此这里可能会发生一些自动装箱和拆箱。我找不到其他任何东西,但可能值得尝试将其更改为 private boolean isAdded;