Android-由于java.lang.NullPointerException,无法显示收到的位置值

时间:2018-05-14 19:53:51

标签: java android

我试图创建一个布局,在文本视图中显示收到的位置更新,但我不断收到此错误,我做错了什么?

提前感谢帮助,我们将不胜感激!

以下是错误:

  

E / AndroidRuntime:致命异常:主要                    处理:com.example.defro.app,PID:7731                    java.lang.NullPointerException:尝试调用虚拟>方法' void android.widget.TextView.setText(java.lang.CharSequence)'在null>对象引用上                         在com.example.defro.app.MainActivity $ 1.onLocationChanged(MainActivity.java:29)`

第29行是:

txtLoc.setText(String.valueOf(iaLocation.getLongitude() + ", " + iaLocation.getLatitude()));

Main_Activity:

public class MainActivity extends AppCompatActivity {

IALocationManager mLocationManager;
IALocationListener mLocationListener = new IALocationListener() {
    @Override
    public void onLocationChanged(IALocation iaLocation) {
        TextView txtLoc = (TextView) findViewById(R.id.textView);
        txtLoc.setText(String.valueOf(iaLocation.getLongitude() + ", " + iaLocation.getLatitude()));

    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

};
private final int CODE_PERMISSIONS = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mLocationManager = IALocationManager.create(this);


    String[] neededPermissions = {
            Manifest.permission.CHANGE_WIFI_STATE,
            Manifest.permission.ACCESS_WIFI_STATE,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.BLUETOOTH,
            Manifest.permission.BLUETOOTH_ADMIN



    };
    ActivityCompat.requestPermissions(this, neededPermissions, CODE_PERMISSIONS);


}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    //Handle if any of the permissions are denied, in grantResults
}


protected void onResume() {
    super.onResume();
    mLocationManager.requestLocationUpdates(IALocationRequest.create(), mLocationListener);

}

protected void onPause() {
    mLocationManager.removeLocationUpdates(mLocationListener);
    super.onPause();
}

protected void onDestroy() {

   mLocationManager.destroy();
   super.onDestroy();
}

}

content_main.xml:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="23dp"
    android:text="Lat, Long"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_bias="0.051"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.032" />

3 个答案:

答案 0 :(得分:2)

在onCreate方法

中写下这一行
TextView txtLoc = (TextView) findViewById(R.id.textView);

将ID添加到TextView

android:id="@+id/textView"

答案 1 :(得分:1)

您正在将 TextView 链接为TextView txtLoc = (TextView) findViewById(R.id.textView);

但是,XML布局文件中没有定义 ID 。 在content_main.xml中定义您的Textview ID,例如android:id="@+id/textView"

答案 2 :(得分:1)

乍一看,textView似乎没有

android:id="@+id/textView"

可能是它无法找到视图。另外,您可能希望获得onCreate()中textView的引用,并将其与null检查一起使用。