#java #android
#java #Android
Вопрос:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 22175
android.content.res.Resources$NotFoundException: String resource ID #0x3c
at android.content.res.Resources.getText(Resources.java:367)
at android.widget.TextView.setText(TextView.java:6370)
at com.example.myapplication.HomeActivity.updateData(HomeActivity.java:244)
at com.example.myapplication.HomeActivity$4$1.onClick(HomeActivity.java:187)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
public void updateData(){
AlertDialog.Builder mydialog = new AlertDialog.Builder(HomeActivity.this);
LayoutInflater inflater = LayoutInflater.from(HomeActivity.this);
View mView = inflater.inflate(R.layout.update_inputfield,null);
final AlertDialog dialog = mydialog.create();
dialog.setView(mView);
final EditText edt_Type = mView.findViewById(R.id.edt_type_upd);
final EditText edt_Amount = mView.findViewById(R.id.edt_amount_upd);
final EditText edt_Note = mView.findViewById(R.id.edt_note_upd);
edt_Type.setText(type);
edt_Type.setSelection(type.length());
edt_Amount.setText(amount);
edt_Amount.setSelection(String.valueOf(amount).length());
//edt_Amount.setSelection(Integer.toString(amount).length());
edt_Note.setText(note);
edt_Note.setSelection(note.length());
Button btnUpdate = mView.findViewById(R.id.btn_save_upd);
Button btnDelete = mView.findViewById(R.id.btn_delete_upd);
btnUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
type = edt_Type.getText().toString().trim();
String mAmount = String.valueOf(amount);
mAmount = edt_Amount.getText().toString().trim();
note = edt_Note.getText().toString().trim();
int amt = Integer.parseInt(mAmount);
String date = DateFormat.getDateInstance().format(new Date());
Data data = new Data(type,amt,note,date,post_key);
mDatabase.child(post_key).setValue(data);
dialog.dismiss();
}
});
And I am calling this updateData() method from
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Data,MyViewHolder>adapter=new FirebaseRecyclerAdapter<Data, MyViewHolder>
(
Data.class,
R.layout.item_data,
MyViewHolder.class,
mDatabase
)
{
@Override
protected void populateViewHolder(MyViewHolder viewHolder, final Data model, final int position) {
viewHolder.setDate(model.getDate());
viewHolder.setType(model.getType());
viewHolder.setAmount(model.getAmount());
viewHolder.setNote(model.getNote());
viewHolder.myview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
post_key=getRef(position).getKey();
type=model.getType();
note=model.getNote();
amount=model.getAmount();
//amount=model.getAmount();
updateData();
}
});
}
};
recyclerView.setAdapter(adapter);
}
Я создаю приложение для составления списка покупок на каждый день и использую адаптер firebaserecycler для создания списка, но когда я нажимаю на любой из элементов списка, он не отображает раздутое меню, как должно.
Любая помощь будет оценена!
Когда я нажимаю на любой из элементов, приложение продолжает сбой.
Это дает мне раздутое меню, когда я нажимаю на плавающую кнопку действия
, и когда я нажимаю на любой из элементов списка, он не работает
Комментарии:
1. Опубликовать свой код? Кажется, что вы пытаетесь ввести строку, но, возможно, вместо этого отправляете int? Например, int a = 5; EditText.setText(a); что-то в этом роде. В любом случае, необходим код, чтобы увидеть, что не так
2. Хорошо, я отредактирую сообщение и вставлю свой код обновления
Ответ №1:
строка
edt_Amount.setText(amount);
сумма — целое число. Когда вы вызываете setText с помощью int, он ищет идентификатор amount, и именно поэтому он терпит неудачу. Измените эту строку на:
edt_Amount.setText(String.valueOf(amount));
Я продолжу читать ваш код, чтобы узнать, произойдет ли это чаще, отредактирую, если да
Редактировать:
String mAmount = String.valueOf(amount);
mAmount = edt_Amount.getText().toString().trim();
note = edt_Note.getText().toString().trim();
int amt = Integer.parseInt(mAmount);
Эта часть — своего рода плохая практика, вы берете int, преобразуете его в String и ничего с ним не делаете. Переназначите эту строку на другое значение. Затем анализирует это значение обратно в int, вы можете заменить его на:
int amt = Integer.parseInt(edt_Amount.getText().toString().trim());
Обратите внимание, что строка
note = edt_Note.getText().toString().trim();
все в порядке, вы можете сохранить его после / перед другими строками
Комментарии:
1. Изменил значение на this => edt_Amount.setText(String.valueOf(сумма) . length()); и переназначил значение int amt = Integer.parseInt(edt_Amount.getText().toString().trim()); Но все равно он показывает ту же ошибку
2. Извините, я изменил свою строку, вам это не нужно. длина в конце.
3. Ошибка находится в строке 367, согласно исходному сообщению об ошибке, не возражаете добавить номера строк или просто отметить строки 362-372?