• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

如何在应用程序启动期间获取位置

原作者: [db:作者] 来自: 网络 收藏 邀请

在我的应用程序中,我希望在应用程序启动期间获取当前位置。在我的主要活动(第一个活动)中,首先获取位置(经度和纬度)并保存共享首选项。之后,我放置HomeFragment。我想在应用程序打开时看到HomeFragment。 在我的HomeFragment中,我想获取sharedPrefreferences,而不是使用位置和纬度信息来计算距离。 但是,这不起作用,当我启动应用程序时,它在保存SharePreferences之前放置HomeFragment。如何在应用程序启动期间获取位置

这里是我的MainActivity:

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
      MyLocation myLocation = new MyLocation(this); 
      myLocation.getLocation(this, locationResult); 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.activity_main); 

      FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
      tx.replace(R.id.flContent, new HomeFragment()); 
      tx.commit(); 

     public MyLocation.LocationResult locationResult = new MyLocation.LocationResult() { 

      @Override 
      public void gotLocation(Location location) { 
       // TODO Auto-generated method stub 
       double Longitude = location.getLongitude(); 
       double Latitude = location.getLatitude(); 

       try { 
        System.out.println("lat"+Latitude); 
        System.out.println("long"+Longitude); 
        SharedPreferences locationpref = getApplication() 
          .getSharedPreferences("location", MODE_PRIVATE); 
        SharedPreferences.Editor prefsEditor = locationpref.edit(); prefsEditor.commit(); 
        prefsEditor.putString("Longitude", Longitude + ""); 
        prefsEditor.putString("Latitude", Latitude + ""); 


       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     }; 

    } 

HomeFragment:

public class HomeFragment extends Fragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 

     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 


     View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
     listView = (ListView) rootView.findViewById(R.id.list); 
     adapter = new CustomListAdapter(getActivity(), restaurantList); 
     listView.setAdapter(adapter); 

     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Bundle bundle = new Bundle(); 
       bundle.putString("restaurantId", String.valueOf(restaurantList.get(position).getId())); 
       MenuLineItemFragment fragment2 = new MenuLineItemFragment(); 
       FragmentManager fragmentManager = getFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.flContent, fragment2); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 

      } 
     }); 


     SharedPreferences pref = getActivity().getApplication().getSharedPreferences("location", MODE_PRIVATE); 
     latitude = pref.getString("Latitude",""); 
     longitude = pref.getString("Longitude",""); 

     if(i==1){ 
      request(); //I use longitude and latitude information in this method. 
      i++; 
     } 



     return rootView; 

    } 

在我的清单文件,我给的权限。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

如何在启动应用程序期间获取当前位置?另外,如果用户的位置关闭,我应该怎么做?

回答

0

一些Location类方法是在后台完成,如getLongitudegetLatitude,是因为的getLocation需要时间不要紧代码Fragment初始化的哪一行或getLocation

在您的代码: -

你叫getLocation> GPS在后台运行,以获得位置>Fragment得到background初始化>getLocation完成并通过返回的值​​>gotLocation被调用。

解决方案: -

第一种方式是初始化gotLocationfragment,这是不推荐的。

方式二sharedPrefreferences保存价值和更新您的UI(片段)时gotLocation结束(可能使用进度条和gotLocati enter code here后隐藏的称呼)。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift 4和Firebase中的信号量建议发布时间:2022-02-24
下一篇:
斯卡拉隐式转换为有效宏内的一元值发布时间:2022-02-24
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap