关键词:
【中文标题】ProgressBar Null Point Exception使应用程序崩溃[关闭]【英文标题】:ProgressBar Null Point Exception making the application crash [closed] 【发布时间】:2020-09-13 17:31:30 【问题描述】:我是 Android 应用程序开发的新手,并且正在开发一个项目。我收到以下错误,我似乎无法找出解决方案,这导致我的应用程序崩溃。
我有一个应用程序连接到 firebase 并注册用户并将其详细信息保存到数据库中。但是,当我打开注册用户活动时,应用程序崩溃了,因此无法继续进行。请帮忙,因为我对 Android 应用程序开发很陌生。
logcat 在这里
2020-05-27 01:08:00.427 25788-25788/com.example.auth E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.auth, PID: 25788
java.lang.RuntimeException: Unable to start activity ComponentInfocom.example.auth/com.example.auth.RegisterActivity: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
at com.example.auth.RegisterActivity.onCreate(RegisterActivity.java:35)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2020-05-27 01:08:00.452 25788-25788/com.example.auth I/Process: Sending signal. PID: 25788 SIG: 9
这里是 RegisterActivity.java
package com.example.auth;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener
private EditText editTextName, editTextEmail, editTextPassword, editTextPhone;
private ProgressBar progressBar;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextName = findViewById(R.id.edit_text_name);
editTextEmail = findViewById(R.id.edit_text_email);
editTextPassword = findViewById(R.id.edit_text_password);
editTextPhone = findViewById(R.id.edit_text_phone);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
**progressBar.setVisibility(View.GONE);**
mAuth = FirebaseAuth.getInstance();
findViewById(R.id.button_register).setOnClickListener(this);
@Override
protected void onStart()
super.onStart();
if (mAuth.getCurrentUser() != null)
//handle the already login user
private void registerUser()
final String name = editTextName.getText().toString().trim();
final String email = editTextEmail.getText().toString().trim();
String password = editTextPassword.getText().toString().trim();
final String phone = editTextPhone.getText().toString().trim();
if (name.isEmpty())
editTextName.setError(getString(R.string.input_error_name));
editTextName.requestFocus();
return;
if (email.isEmpty())
editTextEmail.setError(getString(R.string.input_error_email));
editTextEmail.requestFocus();
return;
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches())
editTextEmail.setError(getString(R.string.input_error_email_invalid));
editTextEmail.requestFocus();
return;
if (password.isEmpty())
editTextPassword.setError(getString(R.string.input_error_password));
editTextPassword.requestFocus();
return;
if (password.length() < 6)
editTextPassword.setError(getString(R.string.input_error_password_length));
editTextPassword.requestFocus();
return;
if (phone.isEmpty())
editTextPhone.setError(getString(R.string.input_error_phone));
editTextPhone.requestFocus();
return;
if (phone.length() != 10)
editTextPhone.setError(getString(R.string.input_error_phone_invalid));
editTextPhone.requestFocus();
return;
progressBar.setVisibility(View.VISIBLE);
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
if (task.isSuccessful())
User user = new User(
name,
email,
phone
);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>()
@Override
public void onComplete(@NonNull Task<Void> task)
progressBar.setVisibility(View.GONE);
if (task.isSuccessful())
Toast.makeText(RegisterActivity.this, getString(R.string.registration_success), Toast.LENGTH_LONG).show();
else
//display a failure message
);
else
Toast.makeText(RegisterActivity.this, task.getException().getMessage(), Toast.LENGTH_LONG).show();
);
@Override
public void onClick(View v)
switch (v.getId())
case R.id.button_register:
registerUser();
break;
这里是activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context="com.example.auth.RegisterActivity">
<LinearLayout
android:layout_
android:layout_
android:layout_centerVertical="true"
android:orientation="vertical"
android:padding="@dimen/default_padding">
<TextView
android:layout_
android:layout_
android:fontFamily="cursive"
android:text="@string/app_name"
android:textAlignment="center"
android:textColor="@color/colorText"
android:textSize="@dimen/app_name_size" />
<EditText
android:id="@+id/edit_text_name"
android:layout_
android:layout_
android:drawableLeft="@drawable/ic_name"
android:drawablePadding="@dimen/drawable_padding"
android:hint="@string/full_name"
android:nextFocusDown="@id/edit_text_email"
android:textColor="@color/colorText"
android:textColorHint="@color/colorHint" />
<EditText
android:id="@+id/edit_text_email"
android:layout_
android:layout_
android:drawableLeft="@drawable/ic_email"
android:drawablePadding="@dimen/drawable_padding"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:nextFocusDown="@id/edit_text_password"
android:textColor="@color/colorText"
android:textColorHint="@color/colorHint" />
<EditText
android:id="@+id/edit_text_password"
android:layout_
android:layout_
android:drawableLeft="@drawable/ic_password"
android:drawablePadding="@dimen/drawable_padding"
android:hint="@string/password"
android:inputType="textPassword"
android:nextFocusDown="@id/edit_text_phone"
android:textColor="@color/colorText"
android:textColorHint="@color/colorHint" />
<EditText
android:id="@+id/edit_text_phone"
android:layout_
android:layout_
android:digits="0123456789"
android:drawableLeft="@drawable/ic_phone"
android:drawablePadding="@dimen/drawable_padding"
android:hint="@string/phone"
android:inputType="number"
android:maxLength="10"
android:nextFocusDown="@id/button_register"
android:textColor="@color/colorText"
android:textColorHint="@color/colorHint" />
<RadioGroup
android:layout_
android:layout_
android:checkedButton="@id/radioButton1"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton1"
android:layout_
android:layout_
android:text="Student" />
<RadioButton
android:id="@+id/radioButton2"
android:layout_
android:layout_
android:text="Institute" />
<RadioButton
android:id="@+id/radioButton3"
android:layout_
android:layout_
android:text="Teacher" />
</RadioGroup>
<Button
android:id="@+id/button_register"
android:layout_
android:layout_
android:background="@drawable/bg_button_register"
android:text="@string/register"
android:textAllCaps="false"
android:textColor="@color/colorText" />
</LinearLayout>
<ProgressBar
android:id="@+id/progressbar"
android:layout_
android:layout_
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
【问题讨论】:
这能回答你的问题吗? What is a NullPointerException, and how do I fix it? 你的问题主要是代码。请添加一些详细信息,然后相应地格式化 logcat。它提高了可读性和答案的准确性。 @PatrickVillela 完成。 【参考方案1】:这是一个错字:
setContentView(R.layout.activity_main);
但您的布局实际上是activity_register
,而不是activity_main
。
你的意思可能是:
setContentView(R.layout.activity_register);
【讨论】:
【参考方案2】:错误信息:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.ProgressBar.setVisibility(int)”
告诉你progressBar
是空的。您不能在空对象上调用方法。它为空,因为findViewById
找不到具有给定 ID 的视图。你将不得不检查你的膨胀。布局找出原因。
【讨论】:
我已经添加了布局文件,该视图具有给定的 ID,但我仍然收到错误消息。请你看一下。【参考方案3】:似乎您在以下位置设置了错误的布局:
setContentView(R.layout.activity_main);
但是你发布了activity_register.xml
你应该这样做:
setContentView(R.layout.activity_register);
如果您尝试在任何 editTexts 上调用任何方法,您也应该在那里获得 NPE。
【讨论】:
没有 NullPointerException 的 Android 新 ProgressBar?
】没有NullPointerException的Android新ProgressBar?【英文标题】:AndroidnewProgressBarwithoutNullPointerException?【发布时间】:2011-08-2815:39:18【问题描述】:每当我尝试构建ProgressBar时,它都会给出NullPointerException。网上的例子说第二个参数可... 查看详情
剑指offer(12)
...)returnlist2;if(list2==null)returnlist1;ListNodelistMergeHead=null;ListNodepoint1=list1;ListNodepoint2=list2;if(point1.val<point2.val)listMergeHead=point1;listMergeHead.next=Merge(point1.next,point2);elselistMergeHead=point2;listMergeHead.next=Merge(point1,point2.next);returnlistMergeHead; ... 查看详情
android的progressbar怎么用
Android提供的ProgressBarWidget控件与ProgressDialog应用目标不同,在程序一开始即可在main.xmlLayout当中布局,先将部署在Layout里的ProgressBar的属性设为隐藏(一开始看不见),而后使用进程来“假装”程序忙碌中,但不同的是,可在进程... 查看详情
Point类型的默认值
】Point类型的默认值【英文标题】:DefaultvalueofPointtype【发布时间】:2018-09-2605:15:39【问题描述】:在Laravel迁移中,我应该使用什么作为Point类型列的默认值?我本来想保留它NULL但后来我read那个:空间索引中的列必须声明为NOTNUL... 查看详情
ProgressBar 未在 MVVM 模式中显示和观察
】ProgressBar未在MVVM模式中显示和观察【英文标题】:ProgressBarnotshowingandobservinginMVVMpattern【发布时间】:2022-01-2013:47:46【问题描述】:我正在尝试观察一个进度条,对我来说一切似乎都很好,但它不起作用..当它到达视图模型时,... 查看详情
c#中怎样改变进度条(progressbar)的颜色?
如题,我想改一下progressbar控件的颜色,该怎么改?先谢谢了!progressbar没有颜色的这个属性属性改变系统自带进度条的方法就是重绘了。具体方法如下:1.自定义控件继承自ProgressBar,如下: public class CustomProgressBar : Prog... 查看详情
Java文件进度条
】Java文件进度条【英文标题】:Javafileaprogressbar【发布时间】:2011-06-2118:48:21【问题描述】:我是Java新手。我想编写一个程序来生成文件我想使用进度条来显示压缩进度有我的代码,但它不起作用工作完成后仅显示100%。getContent... 查看详情
arcgisjavascriptapi点击地图,获取点击的point(x,y)
...;if(name=='ClientTest')map.getGeometry(ESRI.ADF.Graphics.ShapeType.Point,clickHandler,null,null,null,'pointer',true) 查看详情
如何判断一个int类型是不是为空
...类型,然后判断String类型的数据是否为空。示例代码:intpoint;Stringval=point+"";if("".equals(val))//dosomething...PS:intpoint不是对象,int类型为空时默认为0。方法二:如果point是int类型,则得到的结果是不可能是null的。如果... 查看详情
java判断所有参数是不是为空
...类型,然后判断String类型的数据是否为空。示例代码:intpoint;Stringval=point+"";if("".equals(val))//dosomething...PS:intpoint不是对象,int类型为空时默认为0。方法二:如果point是int类型,则得到的结果是不可能是null的。如果... 查看详情
旋转图像时如何避免 OutOfMemory ex?
】旋转图像时如何避免OutOfMemoryex?【英文标题】:HowtoavoidOutOfMemoryexwhilerotatingtheimage?【发布时间】:2013-07-1213:03:16【问题描述】:publicstaticbooleanrotateBitmapByExifAndSave(FiletargetFile)if(targetFile==null||!targetFile.exists()||!targetFi 查看详情
第八周学习总结
...x; intex1,ex2,ex3; Linkfr1,fr2; LinkRF,RC; initial(&L); // srand(time(NULL)); do printf("输入循环双向链结表L的元素个数(1与100(含)之间):"); scanf("%d",&leng); while(leng<0||leng>100); //赋值 Linkcurrent; for(ex1=0;ex1<leng;ex1++) do ex=1; EX=rand()%100;... 查看详情
二叉搜索树找前驱和后继(代码片段)
...f;structBSTintvalue;BST*father;BST*lson;BST*rson;*root;BST*init(intval)BST*point=(BST*)malloc(sizeof(BST));point->value=val;point->lson=point->rson=NULL;returnpoint;voidinsert(intval)BST*father=NULL;BST*now=root;while(now!=NULL)if(now->value==val)return;father=now;if(now->value<val... 查看详情
progressbar(代码片段)
varprogressBar1=newSystem.Windows.Forms.ProgressBar();floatcount=150;progressBar1.Maximum=100;progressBar1.Value=0;floatadd=100/count;floatresult=0f;for(inti=0;i<count;i++)progressBar1.Value=(int)(result+=add);progressBar1.Value=100; 查看详情
一个原生的javascript拖动方法
代码:1functiondrag(t,p){23varpoint=p||null,4target=t||null,5resultX=0,6resultY=0;78(!point)?point=target:‘‘;//如果没有拖动点,则拖动点默认为整个别拖动元素910functiongetPos(t){11varoffsetLeft=0,12offsetTop=0,13offsetParent=t; 查看详情
mfc如何实现鼠标拖拽?
...键,图片可以虽鼠标一起移动参考技术Aboolg_bDrawFlag=false;CPointoldPoint;voidCTestDlg::OnLButtonDown(UINTnFlags,CPointpoint)CDialog::OnLButtonDown(nFlags,point);g_bDrawFlag=true;oldPoint=point;voidCTestDlg::OnMouseMove(UINTnFlags,CPointpoint)CDialog::OnMouseMove(nFlags,point);if(g_bD... 查看详情
二叉搜索树的插入,删除,和中序遍历(代码片段)
...Tintvalue;BST*lson;BST*rson;*root;voidremove(intvalue);BST*init(intval)BST*point=(BST*)malloc(sizeof(BST));point->value=val;point->lson=point->rson=NULL;returnpoint;voidinsert(intval)BST*father=NULL;BST*now=root;while(now!=NULL)if(now->value==val)return;father=now;if(now->value<val... 查看详情
c#中的progressbar控件如何使用?
我在窗体里添加了progressBar又添加了一个时间触发器,时间触发器的Tick事件如下:privatevoidtimer1_Tick(objectsender,EventArgse)if(progressBar1.Value<100)this.progressBar1.Value++;elsethis.timer1.Enabled=false;可那个进度就是不变,哪位大虾帮忙解决下!... 查看详情