【问题标题】:Convert Toast.makeText to textView setText将 Toast.makeText 转换为 textView setText
【发布时间】:2018-11-05 21:46:23
【问题描述】:

我创建应用程序来获取用户位置的坐标,如纬度和经度,所以我使用 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中可以看到坐标?

【问题讨论】:

  • TextView 在你的代码中的位置?

标签: android google-maps location settext android-fusedlocation


【解决方案1】:

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

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

作为您的文本视图。尝试将 mLastLocation.getLatitude()mLastLocation.getLongitude() 转换为字符串,然后再将其设置为 textView。看看这个答案(here)

【讨论】:

    【解决方案2】:

    这个问题只是将您的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

    【讨论】:

    • 保持不变,它得到 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on an null object reference
    • @laura :: 根据您的陈述,您收到了错误setText(double) method TextView.setText(CharSequence) is not applicable (argument mismatch; double cannot be converted to CharSequence),但现在您说您收到了NullPointerException。请仔细阅读我的回答!它指出,如果您尝试将null 转换为Double.toString(),您将得到NullPointerException。当您尝试将null 转换为String.valueOf() 时,您会得到null 返回。
    • @laura :: 请编辑您的原始帖子,并准确说明您是如何使用setText()、在哪个对象上、如何以及在何处声明该对象的。
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多