我试图从我的HomeActivity中为菜单充气,但当我单击列表中的任何项目时,应用程序崩溃 E/AndroidRuntime:致命异常:主 进程:com.example.myapplication,PID:22175 android.content.res.Resources$NotFoundException:字符串资源ID#0x3c 位于android.content.res.Resources.getText(Resources.java:367) 位于android.widget.TextView.setText(TextView.java:6370) 在com.example.myapplication.HomeActivity.updateData(HomeActivity.java:244)上 在com.example.myapplication.HomeActivity$4$1.onClick上(HomeActivity.java:187) 在android.view.view.performClick上(view.java:7125) 在android.view.view.performClickInternal(view.java:7102) 在android.view.view.access$3500(view.java:801) 在android.view.view$PerformClick.run(view.java:27336) 位于android.os.Handler.handleCallback(Handler.java:883) 位于android.os.Handler.dispatchMessage(Handler.java:100) 位于android.os.Looper.loop(Looper.java:214) 位于android.app.ActivityThread.main(ActivityThread.java:7356) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 公共void updateData(){ AlertDialog.Builder mydialog=新建AlertDialog.Builder(HomeActivity.this); LayoutFlater充气器=LayoutFlater.from(HomeActivity.this); 视图mView=充气机。充气(R.layout.update\u inputfield,null); final AlertDialog=mydialog.create(); 对话框.setView(mView); 最终编辑文本edt_类型=mView.findviewbyd(R.id.edt_类型\u upd); 最终编辑文本edt\U金额=mView.findviewbyd(R.id.edt\u金额\u upd); 最终编辑文本edt_Note=mView.findviewbyd(R.id.edt_Note_upd); edt_Type.setText(Type); edt_Type.setSelection(Type.length()); edt_金额.setText(金额); edt_Amount.setSelection(String.valueOf(Amount.length()); //edt_Amount.setSelection(Integer.toString(Amount.length()); edt_Note.setText(注释); edt_Note.setSelection(Note.length()); 按钮btnUpdate=mView.findviewbyd(R.id.btn\u save\u upd); 按钮btnDelete=mView.findviewbyd(R.id.btn\u delete\u upd); btnUpdate.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ type=edt_type.getText().toString().trim(); String mAmount=String.valueOf(金额); mAmount=edt_Amount.getText().toString().trim(); note=edt_note.getText().toString().trim(); int amt=Integer.parseInt(mAmount); 字符串日期=DateFormat.getDateInstance().format(新日期()); 数据数据=新数据(类型、金额、备注、日期、邮政编码); mDatabase.child(post_key).setValue(数据); dialog.dismise(); } }); 我从中调用这个updateData()方法 受保护的void onStart(){ super.onStart(); FirebaseRecyclerAdapteradapter=新的FirebaseRecyclerAdapter ( Data.class, R.layout.item_数据, MyViewHolder.class, mDatabase ) { @凌驾 受保护的void populateViewHolder(MyViewHolder viewHolder、最终数据模型、最终int位置){ setDate(model.getDate()); setType(model.getType()); setAmount(model.getAmount()); setNote(model.getNote()); viewHolder.myview.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ post_key=getRef(位置).getKey(); type=model.getType(); note=model.getNote(); amount=model.getAmount(); //amount=model.getAmount(); 更新数据(); } }); } }; recyclerView.setAdapter(适配器); }
我正在制作一个每日购物清单应用程序,我使用firebaserecycler adapter创建了一个清单,但当我点击任何清单项目时,它不会像应该的那样显示膨胀的菜单。 任何帮助都将不胜感激! 当我点击任何一个项目时,应用程序总是崩溃。 当我点击浮动动作按钮时,它给了我一个膨胀的菜单 当我单击任何列表项时,它都不起作用我试图从我的HomeActivity中为菜单充气,但当我单击列表中的任何项目时,应用程序崩溃 E/AndroidRuntime:致命异常:主 进程:com.example.myapplication,PID:22175 android.content.res.Resources$NotFoundException:字符串资源ID#0x3c 位于android.content.res.Resources.getText(Resources.java:367) 位于android.widget.TextView.setText(TextView.java:6370) 在com.example.myapplication.HomeActivity.updateData(HomeActivity.java:244)上 在com.example.myapplication.HomeActivity$4$1.onClick上(HomeActivity.java:187) 在android.view.view.performClick上(view.java:7125) 在android.view.view.performClickInternal(view.java:7102) 在android.view.view.access$3500(view.java:801) 在android.view.view$PerformClick.run(view.java:27336) 位于android.os.Handler.handleCallback(Handler.java:883) 位于android.os.Handler.dispatchMessage(Handler.java:100) 位于android.os.Looper.loop(Looper.java:214) 位于android.app.ActivityThread.main(ActivityThread.java:7356) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 公共void updateData(){ AlertDialog.Builder mydialog=新建AlertDialog.Builder(HomeActivity.this); LayoutFlater充气器=LayoutFlater.from(HomeActivity.this); 视图mView=充气机。充气(R.layout.update\u inputfield,null); final AlertDialog=mydialog.create(); 对话框.setView(mView); 最终编辑文本edt_类型=mView.findviewbyd(R.id.edt_类型\u upd); 最终编辑文本edt\U金额=mView.findviewbyd(R.id.edt\u金额\u upd); 最终编辑文本edt_Note=mView.findviewbyd(R.id.edt_Note_upd); edt_Type.setText(Type); edt_Type.setSelection(Type.length()); edt_金额.setText(金额); edt_Amount.setSelection(String.valueOf(Amount.length()); //edt_Amount.setSelection(Integer.toString(Amount.length()); edt_Note.setText(注释); edt_Note.setSelection(Note.length()); 按钮btnUpdate=mView.findviewbyd(R.id.btn\u save\u upd); 按钮btnDelete=mView.findviewbyd(R.id.btn\u delete\u upd); btnUpdate.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ type=edt_type.getText().toString().trim(); String mAmount=String.valueOf(金额); mAmount=edt_Amount.getText().toString().trim(); note=edt_note.getText().toString().trim(); int amt=Integer.parseInt(mAmount); 字符串日期=DateFormat.getDateInstance().format(新日期()); 数据数据=新数据(类型、金额、备注、日期、邮政编码); mDatabase.child(post_key).setValue(数据); dialog.dismise(); } }); 我从中调用这个updateData()方法 受保护的void onStart(){ super.onStart(); FirebaseRecyclerAdapteradapter=新的FirebaseRecyclerAdapter ( Data.class, R.layout.item_数据, MyViewHolder.class, mDatabase ) { @凌驾 受保护的void populateViewHolder(MyViewHolder viewHolder、最终数据模型、最终int位置){ setDate(model.getDate()); setType(model.getType()); setAmount(model.getAmount()); setNote(model.getNote()); viewHolder.myview.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ post_key=getRef(位置).getKey(); type=model.getType(); note=model.getNote(); amount=model.getAmount(); //amount=model.getAmount(); 更新数据(); } }); } }; recyclerView.setAdapter(适配器); },java,android,Java,Android,我正在制作一个每日购物清单应用程序,我使用firebaserecycler adapter创建了一个清单,但当我点击任何清单项目时,它不会像应该的那样显示膨胀的菜单。 任何帮助都将不胜感激! 当我点击任何一个项目时,应用程序总是崩溃。 当我点击浮动动作按钮时,它给了我一个膨胀的菜单 当我单击任何列表项时,它都不起作用 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 2
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);
}
amount是整数。使用int调用setText时,它正在查找amount的ID,这就是它失败的原因。将该行更改为:
edt_Amount.setText(amount);
我会继续阅读你的代码,看看它是否会发生更多,如果会编辑
编辑:
这部分是一种不好的做法,您正在获取一个int,将其转换为String,并且什么也不做。请将该字符串重新指定为其他值。然后将该值解析回int,您可以将其替换为:
String mAmount = String.valueOf(amount);
mAmount = edt_Amount.getText().toString().trim();
note = edt_Note.getText().toString().trim();
int amt = Integer.parseInt(mAmount);
请注意,该行
是否可以,您可以在其他行之后/之前保留它发布您的代码?似乎您正在尝试放置字符串,但可能会改为发送int?例如,int a=5;editText.setText(a);类似的内容。无论如何,需要代码来查看错误。确定我将编辑帖子并粘贴更新代码将值更改为this=>edt_Amount.setText(String.valueOf(Amount.length());并重新分配值int amt=Integer.parseInt(edt_Amount.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);
int amt = Integer.parseInt(edt_Amount.getText().toString().trim());
note = edt_Note.getText().toString().trim();