Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';在后台线程中加载布局器_Android_Android Fragments_Android Activity_Layout Inflater - Fatal编程技术网

Android Can';在后台线程中加载布局器

Android Can';在后台线程中加载布局器,android,android-fragments,android-activity,layout-inflater,Android,Android Fragments,Android Activity,Layout Inflater,我有一个片段,在onCreateView方法中有很多代码,所以我认为将这些代码放在外部线程中是个好主意。现在的问题是,我必须在这个线程中加载一个布局,但是如果我在我的活动的onStart方法中创建这个片段的一个新对象,它会在这一行出现一个NullPointerException: LayoutInflater inflater = getActivity().getLayoutInflater(); 我认为getActivity返回null,但为什么呢?我在onStart方法中创建对象。在那里

我有一个片段,在
onCreateView
方法中有很多代码,所以我认为将这些代码放在外部线程中是个好主意。现在的问题是,我必须在这个线程中加载一个布局,但是如果我在我的活动的
onStart
方法中创建这个片段的一个新对象,它会在这一行出现一个NullPointerException:

LayoutInflater inflater = getActivity().getLayoutInflater();
我认为getActivity返回
null
,但为什么呢?我在
onStart
方法中创建对象。在那里,活动不应该返回
null
,或者我的沉思有什么问题?我的代码:

MyFragment f;

public class Tablet extends FragmentActivity
{
    // onCreate(), Variables and so on...

    @Override
    protected void onStart() 
    {
        super.onStart();
        f = new MyFragment();
    }
}

public class StundenAnsicht extends Fragment implements Runnable
{
    public MyFragment()
    {
        Thread t = new Thread(this);
        t.start();
    }

    @Override
    public void run() 
    {
        LayoutInflater inflater = getActivity().getLayoutInflater();
        //...
    }
}
我认为getActivity返回null,但为什么呢

因为片段尚未添加到活动中。事实上,使用如图所示的代码,您的片段永远不会成为活动的一部分,因为您没有通过
FragmentTransaction

getActivity()返回当前片段当前关联的活动。请先附上带有活动的片段。


如果onCreateView中有其他代码,则可以使用AsyncTask,并在ui线程中运行结果处理程序onPostExecute。如果onCreateView中的大多数代码都与ui相关,请将其保留在那里。

能否发布onStart()方法的代码以及线程?我添加了我的帖子。我也用
onResume()
试过了,但是没有用。哦,是的,你是对的,这是合理的。所以如果我不将布局添加到活动中,我就无法加载布局?或者还有其他方法吗?@Cilenco:“因此,如果我不将版面添加到活动中,我就无法加载版面?”——您需要一个
活动来扩大版面。我的建议是你删除所有你用线程做的事情。让你的片段与你的活动正常工作。然后使用Traceview来确定什么是慢的,如果有的话。然后,然后,考虑如何最好地使用线程来处理慢的比特,如果有的话。