无法工作尝试调用虚拟方法';void android.widget.TextView.setText(java.lang.CharSequence)和#x27;关于空对象引用
我已经搜索了我的案例,但我找不到正确的答案,我是这里的新手,它仍然不起作用,请帮助我… 这是我的密码无法工作尝试调用虚拟方法';void android.widget.TextView.setText(java.lang.CharSequence)和#x27;关于空对象引用,java,android,textview,Java,Android,Textview,我已经搜索了我的案例,但我找不到正确的答案,我是这里的新手,它仍然不起作用,请帮助我… 这是我的密码 TextView TotalAmount; int total_amount = 0; RecyclerView dayrecyclerView; List<Day_Details> DL; Day_Adapter dayAdapter; public static List<Day_Details> daysize; TotalAmount = (TextView)
TextView TotalAmount;
int total_amount = 0;
RecyclerView dayrecyclerView;
List<Day_Details> DL;
Day_Adapter dayAdapter;
public static List<Day_Details> daysize;
TotalAmount = (TextView) findViewById(R.id.event_total);
TotalAmount.setText(String.valueOf(total_amount));
public void Day(List<Day_Details> dyl) {
//List<Day_Details>dayDetailsList
Log.i("day response length", "dayresponse length " + dyl.size());
if (dyl.size() > 0) {
daysize = dyl;
daylayout.setVisibility(LinearLayout.VISIBLE);
DL = new ArrayList<>();
dayAdapter = new Day_Adapter(this, DL);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
dayrecyclerView.setLayoutManager(layoutManager);
dayrecyclerView.setItemAnimator(new DefaultItemAnimator());
dayrecyclerView.setAdapter(dayAdapter);
dayrecyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
for (int i = 0; i < dyl.size(); i++) {
String price = "₹ " + dyl.get(i).getDayPrice();
Day_Details DD = new Day_Details(dyl.get(i).getId(),
dyl.get(i).getDayTitle(), dyl.get(i).getDayDate(), price,
dyl.get(i).getDayContent());
Log.i(" Event_view ", "Day: Details "+DD.toString());
DL.add(DD);
}
dayAdapter.notifyDataSetChanged();
}
}
public void daychecker(Boolean ischecked,String id){
if(ischecked == true){
for (int i = 0; i <daysize.size(); i++) {
if(id == daysize.get(i).getId()){
String price = daysize.get(i).getDayPrice();
int amount = Integer.parseInt(price);
total_amount = total_amount + amount;
}
}
TotalAmount.setText("1234");
}else{
for (int i = 0; i <=daysize.size(); i++) {
if(id == String.valueOf(i)){
String price = daysize.get(i).getDayPrice();
int amount = Integer.parseInt(price);
total_amount = total_amount - amount;
TotalAmount.setText(String.valueOf(total_amount));
}
}
}
}
这是我的观点
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.event_view_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
sharedPreferences = getSharedPreferences("DocEventPreference", Context.MODE_PRIVATE);
memid = sharedPreferences.getString("DocId", null);
scrollView = (NestedScrollView) findViewById(R.id.Event_view_Scroll);
//team
teamrecyclerView = (RecyclerView) findViewById(R.id.team_recycler_view);
//gallery
galrecyclerView = (RecyclerView) findViewById(R.id.galleryrecycler_view);
//day
dayrecyclerView = (RecyclerView) findViewById(R.id.dayrecycler_view);
//details
About = (TextView) findViewById(R.id.abouttheevent);
//qrcode
imageView = (ImageView) findViewById(R.id.qrCode);
//register
TotalAmount = (TextView) findViewById(R.id.event_total);
TotalAmount.setText(String.valueOf(total_amount));
registerlay = (LinearLayout) findViewById(R.id.registerlayout);
button = (Button) findViewById(R.id.Event_reg_confirm_btn);
scrollView.post(new Runnable() {
public void run() {
scrollView.fullScroll(scrollView.FOCUS_UP);
}
});
events_details = new Events_Details();
events_details.setId(event_id);
eventitle = (TextView) findViewById(R.id.Event_Name);
Event_IMG = (ImageView) findViewById(R.id.backdrop);
//LinearLayout
eventgallerylayout = (LinearLayout)
findViewById(R.id.EventView_Gallery);
eventdetailslayout = (LinearLayout)
findViewById(R.id.EventView_Details);
daylayout = (LinearLayout) findViewById(R.id.EventDay_Details);
eventteamlayout = (LinearLayout) findViewById(R.id.EventView_Team);
eventQRlayout = (LinearLayout) findViewById(R.id.EventView_Qrcode);
// eventregisterlayout = (LinearLayout)
findViewById(R.id.EventView_Register);
eventdetailslayout.setVisibility(LinearLayout.GONE);
button.setVisibility(View.GONE);
eventteamlayout.setVisibility(LinearLayout.GONE);
daylayout.setVisibility(LinearLayout.GONE);
eventgallerylayout.setVisibility(LinearLayout.GONE);
// eventQRlayout.setVisibility(LinearLayout.GONE);
// eventregisterlayout.setVisibility(LinearLayout.GONE);
SingleEventJavaWebservice webservice = new SingleEventJavaWebservice(
Event_View.this, events_details, Event_View.this);
webservice.execute();
initCollapsingToolbar();
}
提前感谢…@Dithesh请使用debug检查您要赋值的TextView是否已在该方法中初始化。另外,请检查字符串。valueOf(total_amount)返回正确的字符串值。文本视图的初始化应在onCreate()中 TotalAmount=(TextView)findViewById(R.id.event_total) 这就是导致错误的原因 根据更新的问题进行编辑
初始化看起来很好,因此如果布局文件“event\u view\u main.xml”包含id为“event\u total”的TextView,则应检查该文件。如果未初始化TextView,则会抛出空指针
创建活动时,应初始化TextView 请检查您的xml布局,以确定id“event_total”是否正确位于下一行:
TotalAmount = (TextView) findViewById(R.id.event_total);
这不是强制性的我们可以在任何地方初始化它want@HarshSinghal是的,我们可以在onCreate之外初始化视图,但这只能在onCreate之后执行的生命周期方法中完成。因为这是我们膨胀布局的地方,如果没有布局,视图将无法初始化,并将抛出NPE。请阅读我已经把oncreate视图部分。。。请检查一下,告诉我出了什么问题that@DitheshVishalakshan检查id为“event\u total”的文本视图是否存在于布局文件“event\u view\u main.xml”中,实际上它是从另一个xml包含到event\u view\u main布局中的。因此,是否存在任何问题,我已在字符串中传递了6000。返回值为(total\u amount)。。但当时文本视图为空,我不知道为什么。。我已在开始时初始化…是否从活动中调用DayChecker方法?只是为了测试,在TextView初始化后调用此方法TextView的初始化看起来很好。检查第二行是否出现错误。如果未出现错误,则文本视图已正确初始化。TotalAmount=(TextView)findViewById(R.id.event_total);TotalAmount.setText(String.valueOf(total_amount));
TotalAmount = (TextView) findViewById(R.id.event_total);