在Fragment Android中的Runnable中使用“this”

时间:2013-08-09 02:31:16

标签: android android-fragments handler

在我的onResume()我正在运行一个新的Handler,它运行以下代码行:

adapter = new FeedListAdapter(this, feed);
list.setAdapter(adapter); 

现在,当我将此代码移动到Handler中时,第一行内的this变得不被允许,因为显然它位于runnable中,如下所示:

new Handler().postDelayed(new Runnable() { 
    public void run() { 
        adapter = new FeedListAdapter(this, feed);
        list.setAdapter(adapter); 
    } 
}, 500);

现在,我的问题是如何在不创建存储当前片段的方法/变量的情况下访问我所在的片段?

我通过以下方式解决了这个问题:

private FeedListActivity myInstance(){
    return this;
}

this更改为myInstance(),但这似乎是一种糟糕的方式。与创建存储Fragment的新变量相同。有没有办法可以调用我正在运行的片段?

也许这会清楚表明我想做什么:

new Handler().postDelayed(new Runnable() { 
    public void run() { 
        adapter = new FeedListAdapter(getFragment(), feed);
        list.setAdapter(adapter); 
    } 
}, 500);

感谢所有答案。

1 个答案:

答案 0 :(得分:7)

您使用内部类,它隐式引用外部类。您可以在内部类中使用语法:FeedListActivity.this