거의 같은 질문을 가진 게시물을 많이 읽었지만 내 문제를 해결하지 못했습니다. 문제는 작성하려고하는 것입니다. 장치의 GPS를 사용하여 위도와 경도에 대한 2 개의 편집 문구에있는 정보를 지속적으로 업데이트하는 앱입니다. 튜토리얼에서 MainActivity 내부에서 클래스를 생성하는 것을 보았으므로 거의 동일하지만 새로운 클래스 파일을 만들려고합니다. MainActivity에 정보를 보내면 EditText에 도달하지만 그 정보로 채울 수없는 것 같습니다. 이유는 모르겠지만 ... AsynkTask를 구현하려고하는 스레드가 될 수 있다고 생각합니다 (그러나 내 안드로이드 기술 높은되지 않습니다) 그리고 나는 같은 오류가 발생했습니다 ... 어떤 사람이 나를 도울 수 있다면 정말 whful 수 Whfulfull! 내가 잡을 오류이 하나 옆에 코드 ...다른 클래스의 정보로 EditText를 설정하려고 할 때 NullpointerException이 발생했습니다.
이것은 MainActivity
public class MainActivity extends Activity {
public EditText edTLatitud;
public EditText edTLongitud;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edTLatitud = (EditText)this.findViewById(R.id.edTxtLatitud);
edTLongitud = (EditText)this.findViewById(R.id.edTxtLongitud);
ConfigGps();
}
private void ConfigGps()
{
LocationManager mLocationManager;
LocationListener mLocationListener;
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationListener = new MyLocationListener();
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000, 1, mLocationListener);
}
이것은 새 파일 클래스
public class MyLocationListener implements LocationListener{
private MainActivity mainActivity = new MainActivity();
private GPSBackground gpsBackground = new GPSBackground();
private String Latitud,Longitud;
@Override
public void onLocationChanged(Location location) {
gpsBackground.execute(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
private class GPSBackground extends AsyncTask<Location, Void,Void>
{
@Override
protected Void doInBackground(Location... params) {
Location location = params[0];
try{
mainActivity.edTLatitud.setText(String.valueOf(location.getLatitude()));
mainActivity.edTLongitud.setText(String.valueOf(location.getLongitude()));
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
}
}
이다 게시 :
563-572/com.apps3d.logixuexapp W/System.err: java.lang.NullPointerException 08-22 18:57:40.745 563-572/com.apps3d.logixuexapp W/System.err: at com.apps3d.logixuexapp.MyLocationListener$GPSBackground.doInBackground(MyLocationListener.java:50) 08-22 18:57:40.745 563-572/com.apps3d.logixuexapp W/System.err: at com.apps3d.logixuexapp.MyLocationListener$GPSBackground.doInBackground(MyLocationListener.java:42) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:185) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:138) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 08-22 18:57:40.755 563-572/com.apps3d.logixuexapp W/System.err: at java.lang.Thread.run(Thread.java:1019)
글쎄 나는 잘못한 일을하고있다. 나에게 손을 줘라, 나는 안드로이드 개발 jejej의 이것에 새로운 것이다!
을 사용할 수있는 것보다? –
'private MainActivity mainActivity = new MainActivity();'이 줄은 의심스러워 보입니다. 수동으로 새로운 '활동'을 만드는 이유는 무엇입니까? –
글쎄 내가 그런 식으로 내가 EditTexts를 사용하기 위해 MainActivity를 참조하고 있었다. – Elsanty