2015-04-11 5 views
0

У меня есть слушатель GPS класса AppLocationListener, который имеет родительскую активность GPSSensorActivity (не показано ниже).android java: класс доступа, который имеет parentActivity

Я пытаюсь получить доступ AppLocationListener из другого класса QuestionSearch с помощью AppLocationListener searchLL = new AppLocationListener(); searchLL.parentActivity = this;, но с использованием this дает несоответствие типов между QuestionSearch и GPSSensorActivity. ,

Это потому, что невозможно получить доступ к классам, которые имеют родительские действия? Как я могу получить доступ к AppLocationListener. QuestionSearch - это то, что я добавил к существующему коду, который не является моим исходным кодом, я пытаюсь, чтобы я был новичком в java, и не полностью понимаю передачу данных и привязывание классов/методов.

// AppLocationListener class 
import java.util.ArrayList; 
... 

public class AppLocationListener implements LocationListener { 
    public GPSSensorActivity parentActivity; 

    public ArrayList<GeoPoint> pointList; 

    public void onLocationChanged(Location location) { 

} 
    public void onProviderDisabled(String s) { 
    } 
    public void onProviderEnabled(String s) {    
    } 

    public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 

    } 

} 

// QuestionSearch class 
import java.util.ArrayList; 
... 

public class QuestionSearch extends Activity { 

private static final long MINIMUM_DISTANCECHANGE_FOR_UPDATE = 1; // in Meters 
private static final long MINIMUM_TIME_BETWEEN_UPDATE = 5000; // in Milliseconds 
private LocationManager locationManager; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quizmap); 

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    AppLocationListener searchLL = new AppLocationListener(); 
    searchLL.parentActivity = this; 

    ArrayList<GeoPoint> pointList = new ArrayList<GeoPoint>(); 
    ... 
     // add these points to the list 
     pointList.add(gMapPoint); 
     pointList.add(gMapPoint2); 
    pointList.add(gMapPoint3); 


     // now set up the location manager and listener 
    searchLL.pointList = pointList; 
    locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        MINIMUM_TIME_BETWEEN_UPDATE, 
        MINIMUM_DISTANCECHANGE_FOR_UPDATE, 
        searchLL 
    ); 
}  
} 

ответ

1

Чтобы быть в состоянии пройти this в searchLL.parentActivity = this; ваши QuestionSearch должны быть GPSSensorActivity или должны продлить его.

Это потому, что невозможно получить доступ к классам, которые имеют родительские действия?

Нет, это не имеет никакого отношения к этому, это чистая вещь в Java - просто пройди соответствующие классы, где они ожидаются.

+0

спасибо. Переход от R-фона к java немного липкий. Необходимо переосмыслить с точки зрения ООП. – mark

+0

@mark приветствуется. Просто скажите мне, нужна ли вам дополнительная помощь. – AndroidEx

+0

оценил, я, безусловно, буду – mark