小编use*_*816的帖子

来自不同活动的SharedPreferences

我以下列方式从活动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)

我如何访问数据?

android

23
推荐指数
1
解决办法
3万
查看次数

如何将一个月添加到某个日期并获得同一天

我尝试根据工作日添加一个月的日期.例如,日期是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表示一个月的最后一周.

java

6
推荐指数
1
解决办法
3万
查看次数

仅在API级别> 15上导入

我在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?

你怎么处理?

android

2
推荐指数
1
解决办法
1429
查看次数

从服务停止AlarmManager但在Activity中创建

我按照以下方式创建了一个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再次调用...... …

service android alarmmanager

2
推荐指数
1
解决办法
3477
查看次数

构造函数ArrayAdapter <String>(LayoutNext,int,String [])未定义

我尝试从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)

android

1
推荐指数
1
解决办法
2888
查看次数

标签 统计

android ×4

alarmmanager ×1

java ×1

service ×1