android - 以edittext为条件检查firebase值或获取用户输入
问题描述
嗨朋友们,我正在从 firebase 获取价值并将其保存到 edittext(已经完成)。但是我想检查是否有firebase值而不是将其放在edittext上,否则在同一个edittext上从用户那里获取输入,因为我将此值发送到另一个活动,如果firebase中没有值,则会出现空值错误
我正在尝试的代码是
String str= etext.getText().toString();
if(str.equals("")) {
final FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId = user.getUid();
DatabaseReference dbref = FirebaseDatabase.getInstance().getReference("Users/Clients").child(userId);
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Paper.book().write(Common.channel, etext.getText().toString());
names = dataSnapshot.child("channel_id").getValue().toString();
// Toast.makeText(getBaseContext(),names,Toast.LENGTH_LONG).show();
etext.setText(names);
SharedPreferences settings = getSharedPreferences("userInput", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", names);
editor.commit();
Intent i = new Intent(Men.this, Main2Activity.class);
startActivity(i);
finish();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
解决方案
试试下面
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("channel_id") && dataSnapshot.child("channel_id").getValue() != null) {
names = dataSnapshot.child("channel_id").getValue().toString();
Paper.book().write(Common.channel, names);
etext.setText(names);
SharedPreferences settings = getSharedPreferences("userInput", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", names);
editor.commit();
Intent i = new Intent(Men.this, Main2Activity.class);
startActivity(i);
finish();
}
}
推荐阅读
- python - 查找字典中出现频率最高的字符
- office-ui-fabric - 如何在 DetailsList 组件中使整行可点击?(office-ui-fabric)
- flutter - Flutter:如何获取除某些键之外的所有 SharedPreferences 键
- python-3.x - 需要将数组元素添加到列表中。尝试使用“tolist”、“extend”和“append”,但不成功
- github - 在 github 中管理 clearcase 工作流
- angular - ng2 Dragula 和 Angular 管道
- php - Laravel 5.8 说“array_map():预期参数 2 是一个数组,给定的 int”
- swagger - Swagger 在路径参数中转义正斜杠
- regex - 如何使正则表达式跳过一些文本以匹配特定单词,只匹配一次?
- java - 在方法中刷新 JTextArea