Android передает переменную в другой файл Java .... не работает - PullRequest
0 голосов
/ 21 марта 2011

как я могу передать latLongString в elhActivity и показать его на экране .... оба java-файла находятся в одном пакете com.elh.whereami;

Я использовал putExtra и getExtars с намерением, но на экране ничего не отображается

это код whereami.java

package com.elh.database;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
//import android.widget.TextView;

public class whereami extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

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

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);

        Location location = locationManager.getLastKnownLocation(provider);
        updateWithNewLocation(location);

        locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);
    }

    private final LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            updateWithNewLocation(location);
        }

        public void onProviderDisabled(String provider) {
            updateWithNewLocation(null);
        }

        public void onProviderEnabled(String provider) {
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    };

    public void updateWithNewLocation(Location location) {



        String latLongString;
        String addressString = "No address found";

        if (location != null) {
            double lat = location.getLatitude();
            double lng = location.getLongitude();
            latLongString = "Lat:" + lat + "\nLong:" + lng;
} else {
            latLongString = "No location found";
        }

        Intent intent = new Intent(this, elhActivity.class);
        intent.putExtra("the_latLongString", latLongString);
        startActivity(intent);

} }

и это elhActivity.java

package com.elh.database; 
import android.app.Activity;
import android.widget.TextView;

public class elhActivity extends Activity {
    /** Called when the activity is first created. */
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String latlonginfo = getIntent().getStringExtra("the_latLongString");
        TextView tv = new TextView(this);
        tv.setText(latlonginfo);
        setContentView(tv);
 }
}

Ответы [ 3 ]

1 голос
/ 21 марта 2011

getIntent (). GetExtra () вернет объект Bundle, который содержит объекты, которые вы размещаете с помощью putExtra ().

Например:

Bundle arguments = getIntent().getExtras();
String latlonginfo = arguments.getString("the_latLongString");
TextView tv = new TextView(this);
tv.setText(latlonginfo);
setContentView(tv);
0 голосов
/ 21 марта 2011

Рассмотрите возможность создания отдельного макета XML, например, child_dialog.xml для второго действия.

public class ChildActivity extends Activity {
    private String pushedValue;

    @Override
    protected void onCreate(Bundle b){
        super.onCreate(b);
        setContentView(R.layout.child_dialog);
        try {
              pushValue= getIntent().getExtras().getString("the_latLongString");
         }
         catch(Exception e){
              pushValue= "";
         }    
    }
}
0 голосов
/ 21 марта 2011
Intent myIntent = this.getIntent();

String latlonginfo = myIntent.getStringExtra("the_latLongString");

Возможно, проблема в том, что вы дважды используете setContentView в своем коде.

 setContentView(R.layout.main);
 setContentView(tv);

Вам, вероятно, придется покончить с первым setContentView. или, что еще лучше, добавьте TextView в макет во время разработки и инициализируйте текстовое представление с помощью latlonginfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...