Java 运行应用程序时缺少类
我正在一个示例应用程序中使用一个定制的Android库。库中有一个片段,必须从应用程序示例的主要活动中使用 我按照不同教程中的步骤使用它,因为没有一个教程100%地调整了我的项目 该片段包含以下代码:Java 运行应用程序时缺少类,java,android,android-fragments,android-library,Java,Android,Android Fragments,Android Library,我正在一个示例应用程序中使用一个定制的Android库。库中有一个片段,必须从应用程序示例的主要活动中使用 我按照不同教程中的步骤使用它,因为没有一个教程100%地调整了我的项目 该片段包含以下代码: public class MapFragment extends Fragment implements MapView, OnMapReadyCallback { private static final float ZOOM_INITIAL = 12; private OnF
public class MapFragment extends Fragment implements MapView, OnMapReadyCallback {
private static final float ZOOM_INITIAL = 12;
private OnFragmentInteractionListener mListener;
private SupportMapFragment fragment;
private GoogleMap googleMap;
private Location initialLocation;
private WifiSpotsMapPresenter presenter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_wifi_spots_map, container, false);
}
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
centerInLocation(initialLocation);
}
private void centerInLocation(Location location) {
LatLng myLaLn = new LatLng(location.getLatitude(), location.getLongitude());
CameraPosition camPos = new CameraPosition.Builder().target(myLaLn).zoom(ZOOM_INITIAL).bearing(0).tilt(0).build();
CameraUpdate camUpd3 = CameraUpdateFactory.newCameraPosition(camPos);
googleMap.animateCamera(camUpd3);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
initmap();
}
private void initmap() {
FragmentManager fm = getChildFragmentManager();
fragment = (SupportMapFragment) fm.findFragmentById(R.id.map);
if (fragment == null) {
fragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map, fragment).commit();
fragment.getMapAsync(this);
}
}
private void init() {
initialLocation = new Location("");
initialLocation.setLongitude(-3.742735);
initialLocation.setLatitude(40.474886);
presenter = new WifiSpotsMapPresenterImpl();
presenter.setView(this);
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}
主要活动包括:
import example.sdk.ui.map.view.MapFragment;
public class MainActivity extends FragmentActivity implements MapFragment.OnFragmentInteractionListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
}
在编程时,android studio可以完美地解决依赖关系,它一如既往地为我添加了导入,我可以完美地使用implements MapFragment.OnFragmentInteractionListener(编程时您不知道红色0错误)
问题是当我构建/运行它时。出现以下错误:
Error:(9, 83) error: cannot find symbol class OnFragmentInteractionListener
Error:(17, 5) error: method does not override or implement a method from a supertype
如果它在编程时能完美地解析类,那怎么可能呢?我错过了什么
Proguard已禁用 您是如何将jar放置在类路径中的?您必须使用jar在应用程序模块的gradle.build dependencies部分执行此操作!它不是一个.jar,而是一个android库:
编译项目(路径:':blabla.sdk')
如果它是一个AAR,你必须通过maven存储库访问它,可以是本地的。这是我的一个老话题,展示了它是如何工作的:大部分内容仍然是最新的。但它还没有编译,我的项目中有源代码。然后我没有clou你在那里做什么。本地库模块的引用应该像您描述的那样简单。对不起,您是如何将jar放置在类路径中的?您必须使用jar在应用程序模块的gradle.build dependencies部分执行此操作!它不是一个.jar,而是一个android库:编译项目(路径:':blabla.sdk')
如果它是一个AAR,你必须通过maven存储库访问它,可以是本地的。这是我的一个老话题,展示了它是如何工作的:大部分内容仍然是最新的。但它还没有编译,我的项目中有源代码。然后我没有clou你在那里做什么。本地库模块的引用应该像您描述的那样简单。很抱歉