执行方法 null 指针异常中的错误

Error in execute method null pointer exception

提问人:Rizwan Shaikh 提问时间:4/30/2019 最后编辑:PhantômaxxRizwan Shaikh 更新时间:5/10/2019 访问量:139

问:

我正在尝试在我的应用程序中实现 RSS 提要。我从网站上获取了这段代码。我在按钮单击侦听器和滑动刷新侦听器中的执行方法附近获得 Java.lang.NullPointerException。我的应用无法启动;它只是在Android手机中抛出错误。

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

    mRecyclerView = (RecyclerView) 
    findViewById(R.id.recyclerView);

      mEditText = (EditText) 
   findViewById(R.id.rssFeedEditText);

    mFetchFeedButton = (Button) 
  findViewById(R.id.fetchFeedButton);

    mSwipeLayout = (SwipeRefreshLayout) 
   findViewById(R.id.swipeRefreshLayout);

    mFeedTitleTextView = (TextView) 
    findViewById(R.id.feedTitle);

    mFeedDescriptionTextView = (TextView) 
    findViewById(R.id.feedDescription);

    mFeedLinkTextView = (TextView) 
    findViewById(R.id.feedLink);

    mRecyclerView.setLayoutManager(new 
     LinearLayoutManager(this));

    mFetchFeedButton.setOnClickListener(new 
    View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new FetchFeedTask().execute((Void) null);
        }
    });
    mSwipeLayout.setOnRefreshListener(new 
   SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            new FetchFeedTask().execute((Void) null);
        }
    });
   }
}

  // FetchFeedTask class

 private class FetchFeedTask extends AsyncTask<Void, 
 Void, Boolean> {

    private String urlLink;

    @Override
    protected void onPreExecute() {
        mSwipeLayout.setRefreshing(true);
        urlLink = mEditText.getText().toString();
    }

    @Override
    protected Boolean doInBackground(Void... voids) {
        if (TextUtils.isEmpty(urlLink))
            return false;

        try {
            if(!urlLink.startsWith("http://") && 
            !urlLink.startsWith("https://"))
                urlLink = "http://" + urlLink;

            URL url = new URL(urlLink);
            InputStream inputStream = 
    url.openConnection().getInputStream();
            mFeedModelList = parseFeed(inputStream);
            return true;
        } catch (IOException e) {
            Log.e(TAG, "Error", e);
        } catch (XmlPullParserException e) {
            Log.e(TAG, "Error", e);
        }
        return false;
    }

    @Override
    protected void onPostExecute(Boolean success) {
        mSwipeLayout.setRefreshing(false);

        if (success) {
            mFeedTitleTextView.setText("Feed Title: " + 
       mFeedTitle);
            mFeedDescriptionTextView.setText("Feed 
   Description: " + mFeedDescription);
            mFeedLinkTextView.setText("Feed Link: " + 
    mFeedLink);

            // Fill RecyclerView
            mRecyclerView.setAdapter(new 
    RssFeedListAdapter(mFeedModelList));
        } else {
            Toast.makeText(MainActivity.this,
                    "Enter a valid Rss feed url",
                    Toast.LENGTH_LONG).show();
         }
    }
  }
NullPointerException Android-AsyncTask

评论

4赞 Mike M. 4/30/2019
编辑您的问题以提供完整的堆栈跟踪
0赞 GhostCat 4/30/2019
什么是 NullPointerException 的可能重复项,以及如何修复它?

答:

0赞 Viswanath Kumar Sandu 5/10/2019 #1

您应该使用没有任何参数的方法。最重要的是,不是可以作为参数传入方法的数据类型。.execute()Void

所以只需使用

new FetchFeedTask().execute();

而不是

new FetchFeedTask().execute((Void) null);

在两个 Click 侦听器中