SwipeOnRefresh无法正常工作导致我的应用崩溃

时间:2020-06-01 07:38:42

标签: java android

当我刷新应用崩溃的页面时,这是我的代码。 刷新时,我希望它检查设备是否连接到互联网(如果是),然后查看具有按钮的Stub,否则不要查看Stub。

请告诉我我需要在哪里修改代码,我是一个完整的初学者,因此请详细指导我。

package com.example.test1api;

import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.ViewStub;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button button;
    SwipeRefreshLayout refreshLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkConectivity();

        refreshLayout = findViewById(R.id.refreshLayout);
        refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                checkConectivity();
                refreshLayout.setRefreshing(false);

            }
        });



    }


        public void checkConectivity () {

        ViewStub dailyversestub;

        dailyversestub = findViewById(R.id.versestub);


            ConnectivityManager manager = (ConnectivityManager)
                    getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo networkInfo = manager.getActiveNetworkInfo();

            if (networkInfo == null || !networkInfo.isConnected() || !networkInfo.isAvailable()) {


                if (dailyversestub!=null) {
                    dailyversestub.setVisibility(View.GONE);
                }



            } else {

                if (dailyversestub!=null) {
                    dailyversestub.setVisibility(View.VISIBLE);
                }


                    button = findViewById(R.id.button);

                    button.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent(MainActivity.this, EntireMassOrder.class);
                            startActivity(intent);
                        }
                    });




            }


        }


}

LOGCAT

2020-06-01 14:07:43.062 10301-10328 / com.example.test1api E / ion:ioctl c0044901失败,代码为-1:无效参数

1 个答案:

答案 0 :(得分:-1)

如logcat所示,它的发生是由于NullPointerException,这意味着您正在尝试访问的dailyversestubnull

因此,在致电dailyversestub.setVisibility(View.GONE)之前,请添加NULL校验为

if(dailyversestub!=null){
    dailyversestub.setVisibility(View.GONE);
}

dailyversestub.setVisibility(View.VISIBLE);相同