找到当前位置的切换片段

时间:2012-11-13 19:35:24

标签: android geolocation android-fragments

我有一个主要活动,其中确定了位置。在这个主要活动中,我首先添加一个splashscreen片段。目前我发现第一个位置/ GPS工作正常并找到了一个位置,我想用我的主菜单替换这个闪屏。 主要活动中的相关代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.frame);

    //Check that the activity is using the layout version
    // the framelayout

    if(findViewById(R.id.fragment_container)!=null){
        //To avoid overlapping fragments check if we are restored from a state, then we don't have to do anything
        if(savedInstanceState != null){
            return;
        }

        Splash splashscr = new Splash();
        Main main = new Main();

        getSupportFragmentManager().beginTransaction()
        .add(R.id.fragment_container, splashscr).commit();

    // I **think something should be added here 
//to check if a location has been found yet.**

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.fragment_container, main);
        transaction.commit();
        }


}  

我尝试在该位置添加一段时间(foundlocation!= true)。然后,在onLocationChanged()或getLocation()的末尾将foundlocation设置为true。但是,它没有解决我的问题。有人可以帮我吗?如果我没有让我的问题清楚,请说出来。

编辑:在考虑了Gabe的评论之后我尝试了这个(locationfound是一个在活动类中以false开头的公共布尔值)。但是,如果我现在使用DDMS发送位置,那么启动画面就不会消失。如果我是正确的,第一次改变位置时,布尔值仍然是假的,因此它应该切换片段。 我在没有if语句的情况下尝试了它然后它正在工作。我在这里忘记了什么?

public void onLocationChanged(final Location location) { 

       if(locationfound=false)
       {
//Some irrelevant code about saving the new location

        Main main = new Main();

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.fragment_container, main);
        transaction.commit();

        locationfound=true;
           }

//changing value of sometextboxes in the Main fragment

   }

1 个答案:

答案 0 :(得分:0)

不要试图在onCreate中等待 - 它会阻止UI线程导致无响应的UI。相反,您应该在第一次调用onLocationChanged函数时切换片段(通过使用布尔标志变量来判断它是否是第一次)。