当前位置: 代码迷 >> java >> 除了android 9版本,我的应用程序运行良好。 我不明白是什么问题
  详细解决方案

除了android 9版本,我的应用程序运行良好。 我不明白是什么问题

热度:91   发布时间:2023-07-31 11:26:18.0

我是Android的新手。 我有一个应用程序,除了android 9(派)外,所有设备都运行良好。

尝试打开此应用时,它崩溃了。

这是我的毕业证书和密码;

public class TestiFragment extends Fragment {

    private static final boolean GRID_LAYOUT = false;
    RecyclerView mRecyclerView;

    private RssObject rssObject;
    private final String RSS_LINK = "http://www.herkul.org/category/kirik-testi/feed/";
    private final String RSS_TO_JSON_API = "http://api.rss2json.com/v1/api.json?rss_url=";
    private TestiAdapter adapter;

    public static TestiFragment newInstance() {
        return new TestiFragment();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.testi_layout, container, false);
        mRecyclerView = view.findViewById(R.id.testi_recycler);
        return view;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        //setup materialviewpager

        if (GRID_LAYOUT) {
            mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
        } else {
            mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        }
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.addItemDecoration(new MaterialViewPagerHeaderDecorator());

        if(Common.isConnectedtoInternet(getActivity())){
            //loadRss();
        }else{
            Toast.makeText(getActivity(), "Lütfen ?nternet Ba?lant?n?z? Kontrol Edin!", Toast.LENGTH_SHORT).show();
        }
    }

    private void loadRss() {
        AsyncTask<String, String, String> loadRssAsync = new AsyncTask<String, String, String>() {
            ProgressDialog dialog = new ProgressDialog(getActivity());

            @Override
            protected void onPreExecute() {
                dialog.setMessage("Yükleniyor...");
                dialog.show();
            }

            @Override
            protected String doInBackground(String... params) {
                String result;
                HTTPDataHandler http = new HTTPDataHandler();
                result = http.getHTTPData(params[0]);
                return result;
            }

            @Override
            protected void onPostExecute(String s) {
                dialog.dismiss();
                rssObject = new Gson().fromJson(s, RssObject.class);
                adapter = new TestiAdapter(getActivity(), rssObject);
                mRecyclerView.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
        };

        StringBuilder url_Get_Data = new StringBuilder(RSS_TO_JSON_API);
        url_Get_Data.append(RSS_LINK);
        loadRssAsync.execute(url_Get_Data.toString());
    }

    public void removeFromFavorites(String name) {
        List<Item> items = this.rssObject.getItems();
        for (int i = 0; i < items.size(); i++){
            if (items.get(i).title.equals(name)){
                this.adapter.notifyItemChanged(i);
                return;
            }
        }
    }
}

这是我的礼物。

 android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.herkultakip.jdevolope.herkultakip"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 3
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

这是我的日志;

 Process: com.herkultakip.jdevolope.herkultakip, PID: 9265
java.lang.NullPointerException: Attempt to read from field 'java.util.List com.herkultakip.jdevolope.herkultakip.Model.RssObject.items' on a null object reference
    at com.herkultakip.jdevolope.herkultakip.Adapter.TestiAdapter.getItemCount(TestiAdapter.java:71)

如果您想显示什么,请告诉我:)

此错误是什么问题?

但是我不明白为什么它在所有设备上都不能在Andorid 9上运行?

我相信您的错误是在您的loadRss()函数中。

ProgressDialog dialog = new ProgressDialog(getActivity());

自API 26起不推荐使用ProgressDialog 。 对于API> = 26,应使用进度指示器(例如ProgressBar代替

这就解释了为什么它在您测试过的所有其他android版本上都能正常工作。

  相关解决方案