【问题标题】:Time Picker makes my App crash with Error: E/libprocessgroup: failed to make and chown /acct/uid_10058: Read-only file system时间选择器使我的应用程序崩溃并出现错误:E/libprocessgroup: failed to make and chown /acct/uid_10058: Read-only file system
【发布时间】:2020-03-24 16:34:11
【问题描述】:

很抱歉,我再次需要您的帮助。我真的很想自己解决所有这些问题,但是因为我从今年开始只做 Android Coding,所以我还是时不时地不知所措。

我试着做一个时间选择器。如果我在一个新项目中这样做,它会完美运行。但是一旦我将它放入我的“原始应用程序”中,该应用程序就会运行到 View 3,在那里我有 Time Picker。我也可以打开时间选择器。我选择了时间,但是当我单击确定时,它说:不幸的是,应用程序已停止。单击确定后,我跳回到视图 2。我已经尝试重新组织代码并删除了模拟器并创建了一个新的。不管我做什么,它都不起作用。有没有可能,因为我尝试将不同的属性添加到彼此独立学习的应用程序中,所以我在课堂上仍然有错误的顺序?

我认为 TimePickerFragment 应该是正确的,因为选择器可以工作,但在这里我再次添加它:

 public class TimePickerFragment extends DialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, android.text.format.DateFormat.is24HourFormat(getActivity()));
    }
}

我在下面的类中添加了时间选择器

    public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {

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

        Calendar calendar = Calendar.getInstance();
        String currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD).format(calendar.getTime());
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        String time = format.format(calendar.getTime());

        TextView textViewDate = findViewById(R.id.Date);
        textViewDate.setText(currentDate);

        TextView textView = findViewById(R.id.Time2);
        textView.setText(time);

        EditText editText = (EditText) findViewById(R.id.Time1);
        editText.setOnClickListener(new View.OnClickListener() {

              @Override
              public void onClick(View v) {
                  DialogFragment timePicker = new TimePickerFragment();
                  timePicker.show(getSupportFragmentManager(), "time picker");
              }
        });
    }

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        TextView textView = (TextView)findViewById(R.id.time);
        textView.setText(hourOfDay + ":" + minute);
    }
}

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    在你的主课上就这样做,因为它是一个活动而不是片段

        public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_Main);
    
        Calendar calendar = Calendar.getInstance();
        String currentDate = DateFormat.getDateInstance(DateFormat.DATE_FIELD).format(calendar.getTime());
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        String time = format.format(calendar.getTime());
    
        TextView textViewDate = findViewById(R.id.Date);
        textViewDate.setText(currentDate);
    
        TextView textView = findViewById(R.id.Time2);
        textView.setText(time);
    
        EditText editText = (EditText) findViewById(R.id.Time1);
        editText.setOnClickListener(new View.OnClickListener() {
    
              @Override
              public void onClick(View v) {
                  DialogFragment timePicker = new TimePickerFragment();
                  timePicker.show();
              }
        });
    }
    
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        TextView textView = (TextView)findViewById(R.id.time);
        textView.setText(hourOfDay + ":" + minute);
    }
     }
    

    【讨论】:

    • 而不是我为它或某个位置编写的所有代码?会快很多。我在那里做了很多代码大声笑
    • 只是代替:timePicker.show(getSupportFragmentManager(), "time picker");
    • 我试过了。这就是结果:timePicker.show(); ^ 方法 DialogFragment.show(FragmentManager,String) 不适用(实际和形式参数列表长度不同)方法 DialogFragment.show(FragmentTransaction,String) 不适用
    • 删除这个:timePicker.show(getSupportFragmentManager(), "time picker");并把这个 timePicker.show();
    • 好吧,显然我不能再把整个代码放进去。对此感到抱歉。但 O 认为我确实在那里做到了:@Override public void onClick(View v) { DialogFragment timePicker = new TimePickerFragment(); timePicker.show(); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2019-06-04
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多