首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android SwipeRefreshLayout空指针异常SwipeRefreshLayout.setOnRefreshListener()

Android SwipeRefreshLayout空指针异常SwipeRefreshLayout.setOnRefreshListener()
EN

Stack Overflow用户
提问于 2015-11-11 13:04:15
回答 1查看 1.3K关注 0票数 0

我正试图在listview中添加“拉”以刷新功能。

In fragment_page.xml (此处定义为全局列表视图)

代码语言:javascript
复制
<LinearLayout
    style="@style/AppTheme.BaseActivity"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context="xx.view.fragment.PageFragment">

    <TextView
        android:id="@android:id/empty"
        style="@style/AppTheme.WrapContent.NoResult"
        android:text="@string/no_results"/>

    <android.support.v4.widget.SwipeRefreshLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/swiperefresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:listSelector="@drawable/list_selector"/>

    </android.support.v4.widget.SwipeRefreshLayout>

</LinearLayout>

和in活动:

代码语言:javascript
复制
public class MessageActivity extends TabBaseActivity implements ManageView, OnRefreshListener {

    private MessageController mMessageController;
    private int mSelectedTab;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        init();
        setUp(new String[]{"Unread", "Read", "Sent", "All"}, Constants.Adapter.MESSAGE_ADAPTER);
        mMessageController.loadMessages();

        //START  Swipe to refresh
        try {

            final SwipeRefreshLayout swipeContainer = (SwipeRefreshLayout) findViewById(R.id.swiperefresh);
            if(swipeContainer == null) {
                Logger.d("Null");
            }
            swipeContainer.setEnabled(false);
            swipeContainer.setOnRefreshListener(this);

        } catch (Exception e) {
            Logger.e(e.getMessage());
        }
        //END  Swipe to refresh

    }

但是swipeContainer仍然是空的。

我尝试使用以下教程来实现它:

http://www.androidhive.info/2015/05/android-swipe-down-to-refresh-listview-tutorial/

http://www.survivingwithandroid.com/2014/05/android-swiperefreshlayout-tutorial.html

但没有运气。

我该怎么解决呢?

非常感谢你的建议。

编辑:

视图的内容设置在init中:

代码语言:javascript
复制
private void init() {
        mMessageController = MessageController.getInstance(this, getSupportFragmentManager());
        mMessageController.setView(this);
        mSelectedTab = 0;
    }
EN

回答 1

Stack Overflow用户

发布于 2019-10-15 12:08:57

如果要在片段中使用视图(SwipeRefreshLayout等),请在onActivityCreated()方法中初始化视图。一旦onActivityCreated()被调用,您就知道活动已经准备好被调用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33651151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档