繁体   English   中英

适用于Android Studio应用的Java中的OOP

[英]OOP in java for Android studio app

我是Java的新手,尽管一般来说他在python和编程方面有大约多年的经验。 尽管自从最近自学Java以来​​,我还是对面向对象的编程有所了解,但是我不了解一段代码的工作方式/原因。 该代码适用于在android studio中创建的android应用,我试图在其中学习如何使用Google Maps API创建应用。 Java代码是这样的:

package com.example.harry.myapplication;

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));

据我了解,该代码创建了该类,但是我看不到在哪里生成该类的对象才能运行该代码。 我所有的编程经验都来自python /过程编程。

除了不完全了解此代码的工作方式之外,如果我要调用方法.getUiSettings(),我将在哪个对象上调用它?

您所拥有的是类定义-即属于对象的一组属性和方法,在本例中为MapsActivity 当您使用Android设备打开应用程序时,Android操作系统将读取应用程序的AndroidManifest.xml以确定哪个活动是您应用程序的主要活动。 (如果您在Android Studio中进行了此操作,那么我猜想该活动将自动指定为主要活动,而您不必进行任何更改。)Android操作系统会创建该类的实例,然后调用方法的特定顺序,以警告您的对象某些事情正在发生。

getUiSettings()GoogleMap对象的方法。 在活动的onCreate()方法中,调用getMapAsync() 这将启动一个后台线程,以从Google下载地图信息,而不会阻塞您的主线程。 完全接收到该信息后,将使用准备好的GoogleMap作为参数调用onMapReady() 然后,您可以保存该对象以供以后使用

mMap = googleMap;

如果要访问地图的UI设置,可以在地图对象上调用方法

mMap.getUiSettings();

Android编码很大程度上基于异步性和回调,一开始可能会有些混乱。 我同意@Vucko的观点,也许您应该找到在线课程或更有经验的程序员来学习。

地图对象是由地图片段异步创建的,并返回给侦听器,即您的活动。 并且getUiSettings将在GoogleMap对象上调用。 如您在文档中所见,它是对象的方法。

如评论中所述,SO可能不是解决此问题的地方。 我发现最近在堆栈交换网络中有一个代码检查站点 也许更合适。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM