Конвертировать Toast.makeText в textView setText - PullRequest
0 голосов
/ 27 мая 2018

Я создаю приложения для получения местоположений пользователей по координатам, таким как широта и долгота, поэтому я использую play-service-location, мой программный код ниже:

</p>

<code>import android.location.Location;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationServices;


public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    private Location mLastLocation;
    private Button btLocation;
    private GoogleApiClient mGoogleApiClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setupGoogleAPI();

        // initialize button
        btLocation = (Button) findViewById(R.id.bt_getLocation);
        btLocation.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mLastLocation != null) {
                    Toast.makeText(MainActivity.this," Get Location \n " +
                            "Latitude : "+ mLastLocation.getLatitude()+
                            "\nLongitude : "+mLastLocation.getLongitude(), Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    private void setupGoogleAPI(){
        // initialize Google API Client
        mGoogleApiClient = new GoogleApiClient
                .Builder(this)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    @Override
    protected void onStart() {
        super.onStart();
        // connect ke Google API Client ketika start
        mGoogleApiClient.connect();
    }

    @Override
    protected void onStop() {
        super.onStop();
        // disconnect ke Google API Client ketika activity stopped
        mGoogleApiClient.disconnect();
    }

    @Override
    public void onConnected(Bundle bundle) {
        // get last location ketika berhasil connect 
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
        if (mLastLocation != null) {
            Toast.makeText(this," Connected to Google Location API", Toast.LENGTH_LONG).show();
        }
    }


    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {

    }
}
</code>

как показано выше, я использую toast для отображения координат, проблема в том, что, когда я экспериментирую с добавлением setText для отображения координат, возникает ошибка

: не найдено подходящего метода для метода setText (double)TextView.setText (CharSequence) не применяется (несоответствие аргумента; double нельзя преобразовать в CharSequence) метод TextView.setText (int) не применяется (несоответствие аргумента; возможное преобразование с потерями из double в int

Я пробовал несколько дней, и результат всегда ошибка, как я отображаю координаты в setText, чтобы координаты можно было увидеть в textView?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Эта проблема - просто приведение значений double к ожидаемому типу - String подойдет.Java предоставляет несколько методов для этого:

double lat = mLastLocation.getLatitude();

String latString1 = String.valueOf(lat);
String latString2 = Double.toString(lat);

или даже просто быстро и грязно (часто хмурится!):

String latString3 = "" + lat;

Теперь просто используйте setText(), например:

myTextView.setText(latStringX);

"X" для любого варианта, который вы выберете.

Общий комментарий по конверсии:
Если значение, которое вы хотите конвертировать, (по какой-то причине) null, тогда String.valueOf() вернет null, но Double.toString() выдаст NullPointerException.

0 голосов
/ 27 мая 2018

Проблема с вашим тостом в том, что он использует двойные символы вместо строк, поэтому вы не можете установить

"Get Location \ n" + "Latitude:" + mLastLocation.getLatitude () + "\ nLongitude: "+ mLastLocation.getLongitude ()

как текстовое представление.Попробуйте преобразовать mLastLocation.getLatitude() и mLastLocation.getLongitude() в строки, прежде чем устанавливать его как textView.Проверьте этот ответ ( здесь )

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