我以下列方式从活动A加载SharedPreferences:
private void SavePreferences(String key, String value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
Run Code Online (Sandbox Code Playgroud)
在活动BI处想要加载SharedPreferences.以下是NullPointerException:
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
data = sharedPreferences.getString("name", "08:00") ;
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试跟随,我得到此编译错误:"在范围中无法访问类型A的封闭实例"
private void LoadPreferences(){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(A.this);
data = sharedPreferences.getString("name", "08:00") ;
}
Run Code Online (Sandbox Code Playgroud)
我如何访问数据?
我尝试根据工作日添加一个月的日期.例如,日期是9月的星期一.添加后我想要有10月的星期一.我试着在下一个日期添加一个月
Mon Sep 17 17:30:00 MESZ 2012
Run Code Online (Sandbox Code Playgroud)
使用此代码:
Calendar date = Calendar.getInstance();
date.setTimeInMillis(date_in_mil);
date.add(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
Run Code Online (Sandbox Code Playgroud)
但是我得到了
Mon Oct 08 17:30:00 MESZ 2012
Run Code Online (Sandbox Code Playgroud)
这是10月的第二个星期一,而不是第三个星期一.有谁知道这是如何工作的?
编辑 这是我在下面的答案中使用的解决方案:
int prevDayOfWeek = date.get(Calendar.DAY_OF_WEEK);
date.add(Calendar.MONTH, 1);
date.set(Calendar.DAY_OF_WEEK, prevDayOfWeek);
date.set(Calendar.DAY_OF_WEEK_IN_MONTH, week);
Run Code Online (Sandbox Code Playgroud)
星期是一个星期的星期数.前例1表示第一个,第二个表示第二个,依此类推.但是周也可以倒计时,例如-1表示一个月的最后一周.
我在API 8上创建了一个应用程序.现在我想让它与ICS一起使用,为此我需要API 8中没有的其他导入.我想添加以下导入:
import android.provider.CalendarContract;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Events;
Run Code Online (Sandbox Code Playgroud)
那么我是否必须为API> 15制作一个不同的应用程序?应用程序的名称不应更改.
或者也许可以放置2个App版本并根据API级别将minSdkVersion和maxSdkVersion制作成Google Play?
你怎么处理?
我按照以下方式创建了一个AlarmManager.在特定时间之后,服务会以stopSelf()停止,但是alarmmanager会再次启动服务.如何在服务中停止AlarmManager?活动不再运行了,我必须在服务中进行.
使用AlarmManager定期启动服务的活动:
Intent i=new Intent(this, AppService.class);
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if((tb_runBG.isChecked()))
{
alarmManager.cancel(pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *update_time, pi);
}
else
{
// From Activity it's no problem to stop the AlarmManager
alarmManager.cancel(pi);
stopService(new Intent(this, AppService.class));
}
Run Code Online (Sandbox Code Playgroud)
我尝试停止AlarmManager的服务:
Intent i=new Intent(this, volumeActivity.class);
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
// Her I should get the getSystemService from the Activity, but how??
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Following unfortunately not working ...
alarmManager.cancel(pi);
stopSelf();
Run Code Online (Sandbox Code Playgroud)
不幸的是它不起作用.Servive停止,但它由AlarmManager再次调用...... …
我尝试从android.support.v4.app.Fragment类实现Spinner的项目.我总是得到编译器错误
构造函数ArrayAdapter(LayoutNext,int,String [])未定义
我怎样才能解决这个问题?这是代码:
public class LayoutNext extends Fragment
implements OnClickListener,OnItemSelectedListener{
TimePicker timepicker;
private Spinner spinner_next;
public ArrayAdapter<String> adapter;
public static Fragment newInstance(Context context) {
LayoutNext f = new LayoutNext();
return f;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.layout_next, null);
timepicker = (TimePicker) root.findViewById(R.id.timePicker1);
timepicker.setIs24HourView(true);
timepicker.setCurrentHour(0);
timepicker.setCurrentMinute(0);
String[] items_next = { "Next", "From to"};
spinner_next = (Spinner) root.findViewById(R.id.sp_next);
spinner_next.setOnItemSelectedListener(this);
// Here I get the error
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_item,
items_next); …Run Code Online (Sandbox Code Playgroud)