- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
执行我的应用程序时,出现以下错误:
java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
但我之前没有收到此错误。有人可以帮助我吗?
请查看错误控制台,以及上面的java代码
控制台中的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.devbrains.nerdspace, PID: 12393
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.devbrains.nerdspace/br.com.devbrains.nerdspace.activity.MainActivity}: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2812)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2890)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1611)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:171)
at android.app.ActivityThread.main(ActivityThread.java:6633)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Caused by: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at com.google.firebase.database.DatabaseReference.child(com.google.firebase:firebase-database@@16.0.3:101)
at br.com.devbrains.nerdspace.fragment.MessagesFragment.onCreateView(MessagesFragment.java:85)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:620)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
at br.com.devbrains.nerdspace.activity.MainActivity.onStart(MainActivity.java:411)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1335)
at android.app.Activity.performStart(Activity.java:7104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2775)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2890)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1611)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:171)
at android.app.ActivityThread.main(ActivityThread.java:6633)
<小时/>
MessagesFragment.java
MessagesFragment中的第一个错误,错误发生在MessagesDbRef中,但firebase不为null。
public class MessagesFragment extends Fragment {
private static final String TAG = MessagesFragment.class.getSimpleName();
private FirebaseAuth mAuth;
private FirebaseUser user;
private DatabaseReference userDbRef;
private DatabaseReference messagesDbRef;
private DatabaseReference conversationsDbRef;
private FirebaseRecyclerAdapter firebaseRecyclerAdapter;
private RecyclerView recyclerViewConversations;
private Context context;
ImageView imgViewNoMessages;
TextView txtNoMessages;
private String currentUserId;
public MessagesFragment() {
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View messagesView = inflater.inflate(R.layout.fragment_messages, container, false);
imgViewNoMessages = (ImageView) messagesView.findViewById(R.id.image_no_messages);
txtNoMessages = (TextView) messagesView.findViewById(R.id.text_no_messages);
this.context = getContext();
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
if (user != null) {
currentUserId = user.getUid();
}
recyclerViewConversations = (RecyclerView) messagesView.findViewById(R.id.rv_conversations);
userDbRef = FirebaseDatabase.getInstance().getReference().child("Users");
userDbRef.keepSynced(true);
conversationsDbRef = FirebaseDatabase.getInstance().getReference().child("Chat").child(currentUserId);
conversationsDbRef.keepSynced( true );
messagesDbRef = FirebaseDatabase.getInstance().getReference().child("Messages").child(currentUserId);
messagesDbRef.keepSynced(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recyclerViewConversations.setHasFixedSize(true);
recyclerViewConversations.setLayoutManager(linearLayoutManager);
return messagesView;
}
MainActivity.java
此处错误显示在 onStart() 方法中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
nerdspaceProgressBar = NerdspaceProgressBar.getInstance();
//TODO: Ação do botão FAB
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(), CreateNewsActivity.class));
}
});
if (user != null) {
String userUid = user.getUid();
currentUserDbRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userUid);
currentUserDbRef.addValueEventListener(new ValueEventListener() {
@SuppressLint("NewApi")
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
image = (String) dataSnapshot.child("image").getValue();
if (image == null || image.equals("default")) {
if (getApplicationContext() != null) {
GlideApp.with(getApplicationContext())
.load(image)
.placeholder(R.drawable.stormtropper)
.error(R.drawable.stormtropper)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Log.e(TAG, "Error loading image", e);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(civNavHeader);
}
}
String name = (String) dataSnapshot.child("name").getValue();
String email = user.getEmail();
if (getApplicationContext() != null) {
GlideApp.with(getApplicationContext())
.load(image)
.placeholder(R.drawable.stormtropper)
.error(R.drawable.stormtropper)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Log.e(TAG, "Error loading image", e);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(civNavHeader);
}
tvNavHeaderUserName.setText(capitalizeFully(name));
tvNavHeaderUserEmail.setText(email);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
navigationView.setNavigationItemSelectedListener(this);
}
@Override
protected void onStart() {
super.onStart();
if (user == null) {
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();
} else {
currentUserDbRef.child("online").setValue("true");
civNavHeader.setBorderColor(getResources().getColor(R.color.colorOnline));
}
}
最佳答案
看来您没有共享类的所有代码。
所以我只有猜测;
if (user != null) {
currentUserId = user.getUid();
}
这些行表示如果用户为 null,则 currentUserId 将为 null。
conversationsDbRef = FirebaseDatabase.getInstance().getReference().child("Chat")
.child(currentUserId);
在这一行看来,传递的参数currentUserId为null,并且null是导致NullPointerException的原因
关于java.lang.NullPointerException : Can't pass null for argument 'pathString' in child() - Error Occurs in MessagesDbRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53108734/
我正在将我的模板代码移植到 XTend。在某些时候,我在测试用例中有这种类型的条件处理: @Test def xtendIfTest() { val obj = new FD if (
我是新来的 kotlin , 当我开始 Null Safety 时,我对下面的情况感到困惑. There's some data inconsistency with regard to initia
我的应用程序一直在各种Android版本中保持良好状态。我有用户在Android 4.3、5.0、5.1和6.0上正常运行。但是,具有S7 Edge的用户刚刚更新了Android 7.0,将文本粘贴到
我使用的是最新版本的 LWUIT (1.5)。我在资源编辑器中设计了我的表单,然后将代码生成到 netbeans。问题是如果我想访问除表单之外的任何对象,我会收到此错误: java.lang.Null
更新: 我在 Fedora 21 上运行它。 SonarQube - 5.0。 SonarQube Runner - 2.4 更新 2:Findbugs v3.1,Java 插件 v2.8 更新3:
RecupData 我的类仅在 web 中返回 NullPointerException。我连接到 pgsql db 8.3.7 - 该脚本在“控制台”syso 中运行良好 - 但引发了测试 Web
我在 mac 上使用 Processing 2.08。我正在尝试使用文档中给出的 createShape 函数创建 PShape。 PShape s; void setup(){ size(500
我在 mac 上使用 Processing 2.08。我正在尝试使用文档中给出的 createShape 函数创建 PShape。 PShape s; void setup(){ size(500
每次运行此 jsp 时,都会收到以下错误异常: org.apache.jasper.JasperException: java.lang.NullPointerException root cause
Kotlin 在编译时有一个出色的 null 检查,使用分离到“可空?”和“不可为空”的对象。它有一个 KAnnotator 来帮助确定来自 Java 的对象是否可以为空。但是,如果 not-null
我有一个布局将显示一个TextView,用于显示一个滴答时间。我遵循了此链接中的代码 How to Display current time that changes dynamically for
Elasticsearch 1.4.1版(“lucene_version”:“4.10.2”) 我有一个像这样的文件: $ curl 'http://localhost:9200/blog/artic
这是我从另一个类调用函数的方法Selenium 设置已定义。 public void Transfer() throws Exception { System.out.println("\nTrans
我试图在主类中使用我在此类中创建的函数,但它崩溃并显示“警告:无法在根 0 处打开/创建首选项根节点 Software\JavaSoft\Prefsx80000002。 Windows RegCrea
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 3 年前。 我有一个 Java 代码,它将
我声明了两张牌: Card card1 = new Card('3', Card.Suit.clubs); Card card2 = new Card('T', Card.Suit.diamonds)
我编写了一段代码来解码 Base64 图像并在 javafx 中表示该图像。在我的 url base64 代码中不断变化。这就是我在 javafx 代码中使用任务的原因。但我收到错误:java.lan
我正在尝试使用 arrayList 的 arrayList 在 Java 中实现图形。 每当调用 addEdge 函数时,我都会收到 NullPointerException 。我似乎无法弄清楚为什么
我是 Java/android 的新手,所以很多这些术语都是外国的,但我愿意学习。我不打算详细介绍该应用程序,因为我认为它不相关。我目前的问题是,我使用了博客中的教程和代码 fragment ,并使我
我正在开发一个 Android 应用程序来在 Android developer guide 的帮助下录制视频.我程序上的所有代码都与此页面相同。 我在 之外定义了权限标签。 当应
我是一名优秀的程序员,十分优秀!