java - Application crashes when item from searchable spinner is selected
问题描述
when item(hospital name) from searchable spinner is selected i want to retrieve the that specific hospital contact number from FireBase . here i want to retrieve HosCno while specific HosName is selected. when item(hospital name) from searchable spinner is selected i want to retrieve the that specific hospital contact number from FireBase . here i want to retrieve HosCno while specific HosName is selected.
package com.varad_industries.helpinghands;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.toptoche.searchablespinnerlibrary.SearchableSpinner;
import com.varad_industries.helpinghands.Interface.IFirebaseLoadDone;
import com.varad_industries.helpinghands.Model.Member;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements IFirebaseLoadDone {
SearchableSpinner searchableSpinner;
DatabaseReference reff;
IFirebaseLoadDone iFirebaseLoadDone;
List<Member> members;
TextView hcontact;
BottomSheetDialog bottomSheetDialog;
boolean isFirstTimeClick = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button ahos = findViewById(R.id.button);
ahos.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Loading...",Toast.LENGTH_SHORT).show();
Intent i = new Intent(getApplicationContext(), addhos.class);
startActivity(i);
}
});
//code for case spinner
Spinner spinner = findViewById(R.id.spinner); //s w 398dp
ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.cases,android.R.layout.simple_spinner_item);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(arrayAdapter);
//end of code for spinner
searchableSpinner = (SearchableSpinner)findViewById(R.id.searchable_spinner);
bottomSheetDialog = new BottomSheetDialog(this);
View bottom_sheet_dialog = getLayoutInflater().inflate(R.layout.activity_main,null);
//code for get selected hospital number
hcontact = (TextView) bottom_sheet_dialog.findViewById(R.id.hcontact);
bottomSheetDialog.setContentView(bottom_sheet_dialog);
searchableSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(getApplicationContext(),"item clicked",Toast.LENGTH_LONG).show();
Member member = members.get(i);
hcontact.setText(member.getHosCno());
bottomSheetDialog.show();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
//
}
@Override
protected void onResume() {
super.onResume();
reff = FirebaseDatabase.getInstance().getReference("Member");
iFirebaseLoadDone = this;
reff.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
List<Member> members = new ArrayList<>();
for(DataSnapshot hospitalSnapShot:dataSnapshot.getChildren())
{
members.add(hospitalSnapShot.getValue(Member.class));
}
iFirebaseLoadDone.onFirebaseLoadSuccess(members);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
iFirebaseLoadDone.onFirebaseLoadFailed(databaseError.getMessage());
}
});
}
@Override
public void onFirebaseLoadSuccess(List<Member> memberList) {
members = memberList;
List<String> name_list = new ArrayList<>();
for(Member member:memberList)
name_list.add(member.getHosName());
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,name_list);
searchableSpinner.setAdapter(adapter);
}
@Override
public void onFirebaseLoadFailed(String message) {
}
}
Error showing in logcat
2020-03-23 16:48:41.113 20768-20768/com.varad_industries.helpinghands E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.varad_industries.helpinghands, PID: 20768
android.content.res.Resources$NotFoundException: String resource ID #0x6f855
at android.content.res.Resources.getText(Resources.java:347)
at android.content.res.MiuiResources.getText(MiuiResources.java:97)
at android.widget.TextView.setText(TextView.java:4557)
at com.varad_industries.helpinghands.MainActivity$2.onItemSelected(MainActivity.java:77)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:931)
at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:920)
at android.widget.AdapterView.-wrap1(AdapterView.java)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:890)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6375)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
解决方案
当设置为时,您应该将文本设置为String
以防止将值提取为资源Int
:
hcontact.setText(String.valueOf(member.getHosCno()));
推荐阅读
- python - PermissionError:[WinError 5] 访问被拒绝(Windows Update Disabler)
- rust - 为什么弧
Result<(), ()> + Send + Sync> 在编译时不知道 syze - kotlin - Corountine: non-blocking code in `GlobalScope.launch{..}` doesn't work as expected on Kotlin Playgrond site
- log4j - 此图表中的符号是什么意思?
- python - 如何使用其索引(2D)获取 topk 的值?
- azure - 当 Azure 云服务提供多个实例之间的负载均衡时,为什么需要流量管理器?
- c++ - 为什么我的代码给我一个内存错误?C++
- python - 在 Mac M1 上安装 Tesserocr
- python - 如何在深色和浅色 ttk 主题之间切换?
- azure-blob-storage - 我们可以通过 python 将数据附加到存储在 Azure blob 存储中的现有 csv 文件吗?