【问题标题】:Why isn't my variable updating after calling a method?为什么调用方法后我的变量没有更新?
【发布时间】:2018-09-13 08:21:28
【问题描述】:
package my.package.name;

import android.content.DialogInterface;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdate;
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.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    int x;

    @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);
    }


    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @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));

        something();
        System.out.println(sumX); //this prints 0
    }

    private void something() {
        x = 6;
        System.out.println(sumX); //this prints 6
    }
}

似乎执行顺序并没有像我希望的那样发生。在控制台输出中,x = 0 在 x = 6 之前打印。这是为什么呢? Android 是否同时运行方法调用?

【问题讨论】:

  • 你能分享一些代码吗?
  • 好的,我已经添加了一些代码。

标签: android variables methods maps global


【解决方案1】:

我尝试了您的代码并为我工作,否则要解决您的问题,您可以试试这个:

    try {
         something();
     } catch (Exception e) { 
     } finally { 
         System.out.println(x);
     }

或者(不是很清楚)

something();
Handler handler = new Handler();
final Runnable runnable = new Runnable() {
    public void run() {
        System.out.println(sumX);
    }
};
handler.postDelayed(runnable, 50); //50 millisec (delay)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2011-12-08
    • 2015-08-01
    • 1970-01-01
    相关资源
    最近更新 更多