首页 文章

将Toast.makeText转换为textView setText

提问于
浏览
-2

我创建应用程序以获得坐标的用户位置,如纬度和经度,所以我使用play-service-location,我的程序代码如下:

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) {

    }
}

如上所示,我用toast来显示坐标,问题是当我试验添加setText来显示坐标时,出现错误

错误:没有为setText(double)方法找到合适的方法TextView.setText(CharSequence)不适用(参数不匹配; double无法转换为CharSequence)方法TextView.setText(int)不适用(参数不匹配;可能有损转换)从double到int

我试了几天,结果总是出错,我怎么在setText中显示坐标,所以在textView中可以看到坐标?

2 回答

  • 0

    Toast的问题在于它使用双精度而不是字符串,因此无法设置

    “获取位置\ n”“纬度:”mLastLocation.getLatitude()“\ n长度:”mLastLocation.getLongitude()

    作为你的textview . 尝试将 mLastLocation.getLatitude()mLastLocation.getLongitude() 转换为字符串,然后再将其设置为textView . 检查这个答案(here

  • 0

    这个问题只是将 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”,您选择的变体 .

    General Comment on Conversion:
    如果您要转换的值是(由于某种原因) null ,那么 String.valueOf() 将返回 null ,但 Double.toString() 将抛出 NullPointerException .

相关问题