【问题标题】:Setting date to a shared prefernece in android studio在 android studio 中将日期设置为共享首选项
【发布时间】:2022-01-08 11:34:35
【问题描述】:

对 android studio 非常陌生,这是我构建的第一个应用程序,因此我们将不胜感激。我有一个日历设置,我试图将选定的日期保存到一个共享的偏好中。我的问题是我创建的方法在我的 xml 文件中没有显示为 onclick 选项。

这是我目前的代码:

public class calendar extends AppCompatActivity {


CalendarView calendarView;
SharedPreferences booking_date;
String myDate, txt;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_calendar);

    calendarView = findViewById(R.id.id_calendarView);
    

    calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {

             myDate = dayOfMonth + " " + (month + 1) + " " + year; // note the months start at 0

            //redDateText.setText(myDate);

        }

    });
}

public void goSaveDate(View view){

    booking_date = getApplicationContext().getSharedPreferences("booking_details", MODE_PRIVATE);

   
    txt = myDate;

    SharedPreferences.Editor editor = booking_date.edit();
    editor.putString("key_date", txt);
    editor.commit();

    Toast.makeText(getBaseContext(), "Date Saved!!", Toast.LENGTH_SHORT).show();


}

public void goShowDate(View view){
    booking_date = getApplicationContext().getSharedPreferences("booking_details", MODE_PRIVATE);

    String name = booking_date.getString("key_date", null);
    TextView textView = findViewById(R.id.textView5);
    textView.setText("Your Next booking is on: " +name);

}


    @Override
    public void finish () {
        super.finish();
        overridePendingTransition(R.transition.slide_in_left, R.transition.slide_out_right);
    }

}

【问题讨论】:

    标签: java android-studio onclick sharedpreferences


    【解决方案1】:

    除非您使用 view databinding,否则在 XML 布局中的视图上设置 android:onClick="goSaveDate" 的(旧)方法已被弃用。

    已弃用:View 实际上是遍历 Context 层次结构寻找相关方法,这种方法很脆弱,限制了 R8 等字节码优化器。相反,请使用 View.setOnClickListener。

    您可以在活动类中设置 OnClickListener,例如在 onCreate 方法中。

    // each click on R.id.button_save_date will call the goSaveDate method
    findViewById(R.id.button_save_date).setOnClickListener(this::goSaveDate);
    
    findViewById(R.id.button_show_date).setOnClickListener(this::goShowDate);
    

    R.id.button_save_dateR.id.button_show_date 替换为您希望在其上设置点击侦听器的视图的ID。如果这些视图(XML 中的按钮、组件)仍然没有在 XML 布局中设置 android:id="@+id/..." 属性,请先添加它。

    语法:: (this::goSaveDate) 是method reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2017-07-12
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多