Android——Toast.makeText()

本文介绍了Android中Toast的作用及其使用方法。Toast是一种简单的消息提示框,用于短暂显示信息且不可交互。文章详细解释了Toast的三个参数:上下文环境、消息框内容及显示时间,并提供了示例代码。

  1.Toast 作用

    它是android中一种简单的消息提示框,它没有焦点(即不能被点击),会根据设置的时间自动消失。

  2.介绍下Toast的参数

  

1 Toast t = Toast.makeText(MainActivity.this, "哈哈哈", Toast.LENGTH_LONG);
2               t.show();

  第一个参数:当前的上下文环境,,Activity中我们直接用this代替,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,改用ActivityName.this(上面MainActivity.this),                           主要原因是因为现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。

  第二个参数:消息框的内容;

  第三个参数:显示的时间;

 

更多效果详情请参照:http://daikainan.iteye.com/blog/1405575;

 

转载于:https://www.cnblogs.com/mark0812/p/6075265.html

我想我暂时先不更改吧,因为我还有最后一步没做,就是规划路线。我能够搜索到地点,但是用户点击到这去之后,项目就闪退了,肯定就是RoutePlanActivity的问题,代码如下:package com.example.bus; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.util.Log; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.amap.api.maps.AMap; import com.amap.api.maps.MapView; import com.amap.api.services.core.LatLonPoint; import com.amap.api.services.route.BusPath; import com.amap.api.services.route.BusRouteResult; import com.amap.api.services.route.DriveRouteResult; import com.amap.api.services.route.RideRouteResult; import com.amap.api.services.route.RouteResult; import com.amap.api.services.route.RouteSearch; import com.amap.api.services.route.WalkRouteResult; public class RoutePlanActivity extends AppCompatActivity implements RouteSearch.OnRouteSearchListener { private static final String TAG = "RoutePlanActivity"; private MapView mapView; private AMap aMap; private RouteSearch routeSearch; private Handler mainHandler = new Handler(Looper.getMainLooper()); // 防止重复请求 private boolean isSearching = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_route_plan); mapView = findViewById(R.id.map_view); mapView.onCreate(savedInstanceState); if (aMap == null) { aMap = mapView.getMap(); } try { // 初始化 RouteSearch(建议放在 Application 中全局复用) routeSearch = new RouteSearch(this); routeSearch.setRouteSearchListener(this); } catch (Exception e) { Log.e(TAG, "路线服务初始化失败", e); Toast.makeText(this, "路线服务初始化失败,请检查依赖", Toast.LENGTH_LONG).show(); finish(); return; } parseIntentAndStartSearch(); } private void parseIntentAndStartSearch() { if (isSearching) { Toast.makeText(this, "正在查询中,请稍候...", Toast.LENGTH_SHORT).show(); return; } String startMode = getIntent().getStringExtra("start_mode"); double targetLat = getIntent().getDoubleExtra("target_lat", 0); double targetLng = getIntent().getDoubleExtra("target_lng", 0); if (targetLat == 0 || targetLng == 0) { Toast.makeText(this, "目标位置无效", Toast.LENGTH_SHORT).show(); finish(); return; } LatLonPoint startPoint, targetPoint; if ("my_location".equals(startMode)) { // TODO: 使用定位 SDK 获取真实位置 startPoint = new LatLonPoint(39.909186, 116.397411); // 北京 } else { double startLat = getIntent().getDoubleExtra("start_lat", 0); double startLng = getIntent().getDoubleExtra("start_lng", 0); if (startLat == 0 || startLng == 0) { Toast.makeText(this, "起点位置无效", Toast.LENGTH_SHORT).show(); finish(); return; } startPoint = new LatLonPoint(startLat, startLng); } targetPoint = new LatLonPoint(targetLat, targetLng); RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(startPoint, targetPoint); RouteSearch.BusRouteQuery query = new RouteSearch.BusRouteQuery(fromAndTo, RouteSearch.BUS_DEFAULT, "北京", 0); try { isSearching = true; showLoading(); // 显示加载动画 routeSearch.calculateBusRouteAsyn(query); } catch (Exception e) { Log.e(TAG, "启动公交路线查询失败", e); hideLoading(); Toast.makeText(this, "路线查询启动失败", Toast.LENGTH_SHORT).show(); } } @Override public void onBusRouteSearched(BusRouteResult result, int rCode) { isSearching = false; hideLoading(); if (rCode != 1000) { handleSearchError(rCode); return; } if (result == null || result.getPaths() == null || result.getPaths().isEmpty()) { Toast.makeText(this, "未找到公交路线", Toast.LENGTH_SHORT).show(); return; } // ✅ 关键优化:将耗时操作延后或放子线程(如绘制) BusPath bestPath = result.getPaths().get(0); String duration = formatDuration(bestPath.getDuration()); String walkDistance = bestPath.getWalkDistance() + "米步行"; // ✅ 使用 Handler.post 确保轻量更新 UI mainHandler.post(() -> { Toast.makeText(RoutePlanActivity.this, "推荐路线:" + duration + "," + walkDistance, Toast.LENGTH_LONG).show(); // TODO: 此处可添加路线绘制(建议封装成独立方法并加限制) // drawRouteOnMap(bestPath); }); } private void handleSearchError(int rCode) { String errorMsg; switch (rCode) { case 1001: errorMsg = "参数错误"; break; case 1002: errorMsg = "Key 错误"; break; case 1003: errorMsg = "网络错误"; break; case 1004: errorMsg = "其他错误"; break; default: errorMsg = "错误码: " + rCode; } Toast.makeText(this, "查询失败:" + errorMsg, Toast.LENGTH_LONG).show(); } private String formatDuration(long seconds) { long minutes = seconds / 60; if (minutes > 0) return minutes + "分钟"; return (seconds > 0 ? 1 : 0) + "分钟"; } private void showLoading() { // 如果有 ProgressBar 就显示它 // progressBar.setVisibility(View.VISIBLE); } private void hideLoading() { // progressBar.setVisibility(View.GONE); } // --- 其他回调空实现 --- @Override public void onDriveRouteSearched(DriveRouteResult result, int rCode) {} @Override public void onWalkRouteSearched(WalkRouteResult result, int rCode) {} @Override public void onRideRouteSearched(RideRouteResult result, int rCode) {} // ---------------- 生命周期方法 ---------------- @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { if (mapView != null) { mapView.onDestroy(); } if (routeSearch != null) { routeSearch.setRouteSearchListener(null); // 避免内存泄漏 } super.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } }
最新发布
11-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值