Получение ошибок при добавлении progressbar и emptystate, ознакомьтесь с моим кодом

#android #firebase #android-recyclerview

# #Android #firebase #android-recyclerview

Вопрос:

Я создаю простое приложение для тура с firebase, которое почти завершено, но теперь я добавил progressbar и emptystate, которые не отображаются. Мое приложение выходит из строя, когда нет подключения к Интернету, я использовал индикатор выполнения if и else, а пустое состояние не отображается

Ознакомьтесь с моим кодом и скриншотами, которые помогут мне решить эту проблему введите описание изображения здесь

   public class MainActivity extends AppCompatActivity {
        private static final String TAG = "MainActivity";
        Toolbar toolbar;
        RecyclerView mRecyclerView;
        FirebaseAdapter mAdapter;
        FirebaseRecyclerOptions<DataClass> options;
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference(" Center");
       private  TextView mEmptyStateTextView;
        private ProgressBar mProgressBar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
         //   View loadingIndicator = findViewById(R.id.progressBar);
      mProgressBar = (ProgressBar)findViewById(R.id.progressBar);
            ConnectivityManager cm =
                    (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
            if( activeNetwork != null amp;amp;
                    activeNetwork.isConnectedOrConnecting()) {
    
             
               mProgressBar.setVisibility(View.GONE);
    
                toolbar = findViewById(R.id.toolBar);
                this.setSupportActionBar(toolbar);
                this.getSupportActionBar().setTitle("");
    
                options = new FirebaseRecyclerOptions.Builder<DataClass>()
                        .setQuery(myRef, DataClass.class)
                        .build();
            }
            else {
                mProgressBar.setVisibility(View.GONE);
                mEmptyStateTextView = (TextView) findViewById(R.id.emptyState);
                mEmptyStateTextView.setText(R.string.no_internet_connection);
           }
    
            mRecyclerView = (RecyclerView) findViewById(R.id.recylerview);
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
            mAdapter = new FirebaseAdapter(options, MainActivity.this);
            mRecyclerView.setAdapter(mAdapter);
            mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
        }
    
    In Xml:
    
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:background="@drawable/recyclerview_bg"
            android:padding="10dp"
            android:layout_below="@id/tool">
            <androidx.recyclerview.widget.RecyclerView
                android:id="@ id/recylerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="4dp"
                android:layout_marginLeft="3dp"
                android:layout_marginTop="4dp" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:textAppearanceMedium"
                android:id="@ id/emptyState"
                android:layout_centerInParent="true" />
    
            <androidx.core.widget.ContentLoadingProgressBar
                android:id="@ id/progressBar"
                style="@style/Widget.AppCompat.ProgressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true" />

Error:
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bgcenter/com.example.bgcenter.MainActivity}: 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:2946)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
        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:1831)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:201)
        at android.app.ActivityThread.main(ActivityThread.java:6810)
        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:873)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference
        at com.example.bgcenter.MainActivity.onCreate(MainActivity.java:61)
 

Комментарии:

1. Попробуйте изменить объявление переменной на private ContentLoadingProgressBar mProgressBar и инициализацию переменной на mProgressBar = (ContentLoadingProgressBar) findViewById(R.id.progressBar);

2. Спасибо, брат, за ответ