第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由于空對象引用,應用程序崩潰

由于空對象引用,應用程序崩潰

繁華開滿天機 2022-05-25 16:21:08
調(diào)用 (user.getlat) 和 (user.getlng) 時出現(xiàn)問題。我已經(jīng)全局聲明了用戶對象,并在 getUserData() 方法中對其進行了初始化。但是當我運行應用程序時,應用程序崩潰并且在 logcat 中說:java.lang.NullPointerException:嘗試在空對象引用上調(diào)用虛擬方法“double com.example.profile.User.getLat()”public class Profile extends FragmentActivity implements OnMapReadyCallback {private GoogleMap mMap;private LocationManager locationManager;private LocationListener locationListener;private FirebaseAuth mAuth;DatabaseReference database = FirebaseDatabase.getInstance().getReference();DatabaseReference myRef = database.child("users");User user;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_profile);    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()            .findFragmentById(R.id.mapFragment);    mapFragment.getMapAsync(this);    mAuth = FirebaseAuth.getInstance();}public void getUserData(){    String uID = mAuth.getCurrentUser().getUid();    myRef.child(uID).addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(DataSnapshot dataSnapshot) {            dataSnapshot.getChildren();            user = dataSnapshot.getValue(User.class);            Toast.makeText(Profile.this, "" + user.lng, Toast.LENGTH_LONG).show(); // Prints the value normally!        }        @Override        public void onCancelled(DatabaseError databaseError) {            Toast.makeText(Profile.this, "Failed to read from database!", Toast.LENGTH_LONG).show();        }    });}@Overridepublic void onMapReady(GoogleMap googleMap) {    mMap = googleMap;    LatLng userL = new LatLng(user.getLat(),user.getLng()); // The problem occurs here!     mMap.clear();    mMap.addMarker(new MarkerOptions().position(userL).title("Your Location"));    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userL,17));}}
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

首先,您沒有getUserData()在任何地方調(diào)用方法。我讀到您也嘗試添加該邏輯onCreate(),但是沒有用。


添加偵聽器并不意味著您會立即獲得預期的結果。


僅使用該onMapReady()方法設置地圖,設置不依賴于User. 僅在檢測到User數(shù)據(jù)更改時添加/修改地圖標記。查看更改:


public void getUserData(){

    String uID = mAuth.getCurrentUser().getUid();

    myRef.child(uID).addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(DataSnapshot dataSnapshot) {


            dataSnapshot.getChildren();

            user = dataSnapshot.getValue(User.class);

            LatLng userL = new LatLng(user.getLat(),user.getLng());

            if(mMap!=null){

               mMap.clear();

               mMap.addMarker(new MarkerOptions().position(userL).title("Your 

               Location"));

             mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userL,17));

            }

            Toast.makeText(Profile.this, "" + user.lng, Toast.LENGTH_LONG).show(); // Prints the value normally!


        }


        @Override

        public void onCancelled(DatabaseError databaseError) {

            Toast.makeText(Profile.this, "Failed to read from database!", Toast.LENGTH_LONG).show();

        }

    });

}


@Override

public void onMapReady(GoogleMap googleMap) {

    mMap = googleMap;

}

請調(diào)用該方法getUserData()或?qū)⑵浯a移入onCreate().


查看完整回答
反對 回復 2022-05-25
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號