你更改后他还是不行。其实问题不止这个,还有很多很多,这个问题我想放到最后再去修改,在这之前有个SearchResultActivity,也是你上面提供的,代码如下:package com.example.bus;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import java.util.ArrayList;
import java.util.List;
public class SearchResultActivity extends AppCompatActivity implements PoiSearch.OnPoiSearchListener {
private EditText searchInput;
private Button searchBtn;
private RecyclerView resultListView;
private Button goToBtn;
private List<PoiItem> poiList = new ArrayList<>();
private ResultAdapter adapter;
private PoiSearch poiSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_result);
initViews();
setupSearch();
}
private void initViews() {
searchInput = findViewById(R.id.search_input);
searchBtn = findViewById(R.id.search_btn);
resultListView = findViewById(R.id.result_list);
goToBtn = findViewById(R.id.btn_go_to);
}
private void setupSearch() {
// 接收传入关键词
String keyword = getIntent().getStringExtra("keyword");
if (keyword != null && !keyword.isEmpty()) {
searchInput.setText(keyword);
performSearch(keyword);
}
searchBtn.setOnClickListener(v -> {
String text = searchInput.getText().toString().trim();
if (!text.isEmpty()) performSearch(text);
else Toast.makeText(this, "请输入关键词", Toast.LENGTH_SHORT).show();
});
goToBtn.setEnabled(false);
goToBtn.setOnClickListener(v -> {
if (!poiList.isEmpty()) {
PoiItem target = poiList.get(0); // 默认选第一个
LatLonPoint point = target.getLatLonPoint();
Intent intent = new Intent(this, RoutePlanActivity.class);
intent.putExtra("start_mode", "my_location"); // 表示从“我的位置”出发
intent.putExtra("target_lat", point.getLatitude());
intent.putExtra("target_lng", point.getLongitude());
intent.putExtra("target_title", target.getTitle());
startActivity(intent);
}
});
}
private void performSearch(String keyword) {
PoiSearch.Query query = new PoiSearch.Query(keyword, "busstation|busline", ""); // 只搜公交相关
query.setPageSize(20);
try {
poiSearch = new PoiSearch(this, query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn(); // 异步方法 → 不会抛异常
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "搜索初始化失败,请检查地图服务", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onPoiSearched(PoiResult result, int rCode) {
if (rCode == 1000 && result != null && result.getPois() != null) {
poiList.clear();
poiList.addAll(result.getPois());
if (adapter == null) {
adapter = new ResultAdapter(poiList, item -> {
// 可扩展:点击某个站点查看详情
});
resultListView.setLayoutManager(new LinearLayoutManager(this));
resultListView.setAdapter(adapter);
} else {
adapter.notifyDataSetChanged();
}
goToBtn.setEnabled(!poiList.isEmpty());
} else {
Toast.makeText(this, "搜索失败: 错误码=" + rCode, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onPoiItemSearched(PoiItem item, int rCode) {
// 本项目未使用单个 POI 搜索功能
}
}
activity_search_result.xml代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="8dp"
android:fitsSystemWindows="true"
android:background="@color/surface_background">
<!-- 搜索栏 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="8dp">
<EditText
android:id="@+id/search_input"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:hint="搜索公交站或线路"
android:padding="12dp"
android:background="@drawable/rounded_edittext"
android:layout_marginEnd="8dp" />
<Button
android:id="@+id/search_btn"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:text="搜索" />
</LinearLayout>
<!-- 搜索结果列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/result_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<!-- “到这去”按钮 -->
<Button
android:id="@+id/btn_go_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="到这去"
android:layout_marginTop="8dp"
android:backgroundTint="@color/design_default_color_primary" />
</LinearLayout>
首先,我不是很想用LinearLayout布局,我想用ConstraintLayout布局,而且呢这个布局我希望以百分比的形式显示在页面上,因为每个设备的长宽比都不一样,如果是固定了各部分组件的距离的话,他在另一个设备上显示就不美观了。其次,这个界面少了一个返回主界面的功能。这个的话,我之前那个activity_survey.xml就做得很好。activity_survey.xml代码如下:<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:fitsSystemWindows="true"
android:background="@color/surface_background">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- 问题1:评分 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="32dp"
android:text="🚌 用户体验调研"
android:textColor="#777777"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1. 您对本应用的整体评分是?"
android:textStyle="bold"
android:textColor="#777777"
android:layout_marginBottom="8dp" />
<RadioGroup
android:id="@+id/radioGroupRating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp">
<RadioButton
android:text="⭐ 1分 - 非常不满意"
android:textColor="@color/black"
android:id="@+id/rb1"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<RadioButton
android:text="⭐⭐ 2分 - 不满意"
android:textColor="@color/black"
android:id="@+id/rb2"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<RadioButton
android:text="⭐⭐⭐ 3分 - 一般"
android:textColor="@color/black"
android:id="@+id/rb3"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<RadioButton
android:text="⭐⭐⭐⭐ 4分 - 满意"
android:textColor="@color/black"
android:id="@+id/rb4"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<RadioButton
android:text="⭐⭐⭐⭐⭐ 5分 - 非常满意"
android:textColor="@color/black"
android:id="@+id/rb5"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</RadioGroup>
<!-- 问题2:满意度 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2. 您对以下哪些方面或功能感到满意?(可多选)"
android:textColor="#777777"
android:textStyle="bold"
android:layout_marginBottom="8dp" />
<CheckBox
android:id="@+id/cb_ui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="界面美观易用"
android:textColor="@color/black"/>
<CheckBox
android:id="@+id/cb_speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加载速度快"
android:textColor="@color/black"/>
<CheckBox
android:id="@+id/cb_information"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查询信息准确"
android:textColor="@color/black"/>
<CheckBox
android:id="@+id/cb_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="其他"
android:textColor="@color/black"/>
<!-- 问题3:建议 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3. 您有什么改进建议?"
android:textColor="#777777"
android:textStyle="bold"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp" />
<EditText
android:id="@+id/et_suggestion"
android:layout_width="match_parent"
android:layout_height="120dp"
android:gravity="top"
android:hint="请输入您的建议..."
android:textColorHint="#777777"
android:textColor="@color/black"
android:inputType="textMultiLine"
android:minLines="3" />
<!-- 提交按钮 -->
<Button
android:id="@+id/btn_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交反馈"
android:textSize="18sp"
android:layout_marginTop="32dp"
style="?android:attr/buttonStyle" />
</LinearLayout>
</ScrollView>
SurveyActivity代码如下:package com.example.bus;
import android.os.Bundle;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.app.AlertDialog;
public class SurveyActivity extends AppCompatActivity {
private static final String FEEDBACK_EMAIL = "your_email@example.com"; // 修改为你自己的邮箱地址
private static final String EMAIL_SUBJECT = "用户调研反馈";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_survey);
// 显示 ActionBar 上的返回箭头
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("用户调研");
}
// 绑定控件
RadioGroup radioGroupRating = findViewById(R.id.radioGroupRating);
CheckBox cbUi = findViewById(R.id.cb_ui);
CheckBox cbSpeed = findViewById(R.id.cb_speed);
CheckBox cbInformation = findViewById(R.id.cb_information);
CheckBox cbOther = findViewById(R.id.cb_other);
EditText etSuggestion = findViewById(R.id.et_suggestion);
Button btnSubmit = findViewById(R.id.btn_submit);
// 提交按钮点击事件
btnSubmit.setOnClickListener(v -> {
// 获取评分
int selectedId = radioGroupRating.getCheckedRadioButtonId();
String rating = "未评分";
if (selectedId == R.id.rb1) rating = "1分";
else if (selectedId == R.id.rb2) rating = "2分";
else if (selectedId == R.id.rb3) rating = "3分";
else if (selectedId == R.id.rb4) rating = "4分";
else if (selectedId == R.id.rb5) rating = "5分";
// 获取满意度选项
StringBuilder satisfaction = new StringBuilder();
if (cbUi.isChecked()) satisfaction.append("界面美观易用, ");
if (cbSpeed.isChecked()) satisfaction.append("加载速度快, ");
if (cbInformation.isChecked()) satisfaction.append("功能丰富实用, ");
if (cbOther.isChecked()) satisfaction.append("其他, ");
String satisfactionStr = satisfaction.length() > 0 ?
satisfaction.substring(0, satisfaction.length() - 2) : "无";
// 获取建议
String suggestion = etSuggestion.getText().toString().trim();
if (suggestion.isEmpty()) suggestion = "无";
// 拼接邮件正文
String body = String.format(
"用户调研反馈\n\n" +
"【整体评分】\n%s\n\n" +
"【满意项】\n%s\n\n" +
"【改进建议】\n%s\n\n" +
"---\n来自 Android 客户端自动提交",
rating, satisfactionStr, suggestion
);
// 发送邮件
sendEmail(body);
});
}
/**
* 发送邮件核心方法
*/
private void sendEmail(String body) {
try {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain"); // 纯文本
// 设置收件人邮箱(必须为字符串数组)
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{FEEDBACK_EMAIL});
// 设置主题和正文
intent.putExtra(Intent.EXTRA_SUBJECT, EMAIL_SUBJECT);
intent.putExtra(Intent.EXTRA_TEXT, body);
// 启动系统选择器
startActivity(Intent.createChooser(intent, "选择邮件客户端"));
} catch (Exception e) {
Toast.makeText(this,
"无法启动邮件应用,请安装Gmail、QQ邮箱等程序",
Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onSupportNavigateUp() {
onBackPressed(); // 执行返回操作
return true; // 表示已处理该事件
}
}
我希望像这种在顶部的框加个能够返回主界面的东西。还有就是第三个,activity_search_result.xml上面不是也有个搜索框嘛,我希望在home界面搜索的内容也显示在这里,如果在搜索框重新点击搜索按钮后,底下会更新搜索数据,最好在这个界面也加一个地图,可以为用户提供地图选点功能,跟我map界面一样的加载地图流程。MapFragment代码如下:package com.example.bus.ui.map;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.amap.api.maps.MapView;
import com.amap.api.maps.AMap;
import com.amap.api.maps.model.LatLng;
//import com.example.bus.R;
//import com.example.bus.databinding.FragmentMapBinding;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.UiSettings;
import com.example.bus.R;
import com.example.bus.RoutePlanActivity;
import com.example.bus.databinding.FragmentMapBinding;
// MapView 已在 XML 中声明,无需额外 import(会自动识别)
public class MapFragment extends Fragment {
private FragmentMapBinding binding;
private MapView mapView; // 高德地图视图
private AMap aMap; // 地图控制器
private boolean isFirstLocationSet = false; // 防止反复跳转
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// 初始化 ViewModel 和 ViewBinding
binding = FragmentMapBinding.inflate(inflater, container, false);
View root = binding.getRoot();
//绑定 MapView
mapView = root.findViewById(R.id.map_view);
mapView.onCreate(savedInstanceState); // 必须调用生命周期方法
// 初始化地图
initMap();
if (binding.mapSearch != null) {
binding.mapSearch.setOnClickListener(v -> {
String keyword = binding.mapInput2.getText().toString().trim();
if (keyword.isEmpty()) {
Toast.makeText(requireContext(), "请输入终点", Toast.LENGTH_SHORT).show();
return;
}
// ✅ 直接跳转路线页(不需要权限检查,因为能进此 Fragment 说明已有权限)
Intent intent = new Intent(requireContext(), RoutePlanActivity.class);
intent.putExtra("start_mode", "input"); // 表示从输入框获取起点
// TODO: 可提取 map_input1.getText() 作为起点坐标(需先搜索)
intent.putExtra("target_lat", 0); // 暂空,实际应在搜索后填充
intent.putExtra("target_lng", 0);
intent.putExtra("target_title", keyword);
startActivity(intent);
});
}
return root;
}
/**
* 初始化地图
*/
private void initMap() {
if (aMap == null) {
aMap = mapView.getMap();
UiSettings uiSettings = aMap.getUiSettings();
uiSettings.setZoomControlsEnabled(true); // 显示缩放按钮
uiSettings.setCompassEnabled(true); // 显示指南针
uiSettings.setMyLocationButtonEnabled(false); // 我们自己控制定位行为
}
}
@Override
public void onResume() {
super.onResume(); //每次恢复可见时都检查权限状态
mapView.onResume();
// ✅ 直接开启定位图层(信任 MainActivity 的判断)
if (aMap != null) {
aMap.setMyLocationEnabled(true);
// 只第一次进入时移动相机
if (!isFirstLocationSet) {
LatLng defaultLoc = new LatLng(39.909186, 116.397411);
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(defaultLoc, 12f));
isFirstLocationSet = true;
}
}
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (mapView != null) {
mapView.onDestroy();
}
binding = null;
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}
fragment_map.xml代码如下:<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.map.MapFragment"
android:fitsSystemWindows="true"
android:background="@color/surface_background">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_top_offset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.015" />
<!-- 🔹 起点输入框 -->
<EditText
android:id="@+id/map_input1"
android:layout_width="0dp"
android:layout_height="48dp"
android:hint="请输入起点"
android:textColorHint="#777777"
android:textColor="@color/black"
android:background="@drawable/rounded_edittext"
android:padding="12dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="32dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/guideline_search"
app:layout_constraintTop_toTopOf="@id/guideline_top_offset" />
<!-- 🔹 终点输入框 -->
<EditText
android:id="@+id/map_input2"
android:layout_width="0dp"
android:layout_height="48dp"
android:hint="请输入终点"
android:textColorHint="#777777"
android:textColor="@color/black"
android:background="@drawable/rounded_edittext"
android:padding="12dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/guideline_search"
app:layout_constraintTop_toBottomOf="@id/map_input1" />
<!-- ✅ 分割线:75% 处(原样保留) -->
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.75" />
<!-- 🔍 搜索按钮:纵向拉高,覆盖两个输入框 -->
<Button
android:id="@+id/map_search"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="搜索"
android:textSize="16sp"
android:gravity="center"
app:layout_constraintStart_toStartOf="@id/guideline_search"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/map_input1"
app:layout_constraintBottom_toBottomOf="@id/map_input2"
android:layout_marginEnd="16dp" />
<!-- 🗺️ 地图视图:从终点输入框下方开始,延伸到底部 -->
<com.amap.api.maps.MapView
android:id="@+id/map_view"
android:text="Bus-1.0"
android:textColor="#777777"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/map_input2"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="4dp"
android:layout_marginBottom="0dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
第四个,我在fragment_home中搜索的内容无论搜索什么他都还没有数据,这个搜索之后进入SearchResultActivity真的能搜得到高德数据吗?以上提到了home界面,在这里我顺便也把相关代码提供给你。fragment_home.xml代码如下:<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment"
android:fitsSystemWindows="true"
android:background="@color/surface_background">
<!-- 🔍 输入框 -->
<EditText
android:id="@+id/home_input"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="请输入需要查询的公交线路或站点"
android:textColorHint="#777777"
android:textColor="@color/black"
android:background="@drawable/rounded_edittext"
android:minHeight="48dp"
android:textSize="16sp"
android:padding="12dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/home_search"
app:layout_constraintHorizontal_chainStyle="packed"
android:layout_marginStart="16dp"
android:layout_marginEnd="8dp"
android:layout_marginTop="88dp" />
<!-- 🔎 搜索按钮 -->
<Button
android:id="@+id/home_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
app:layout_constraintTop_toTopOf="@id/home_input"
app:layout_constraintBottom_toBottomOf="@id/home_input"
app:layout_constraintStart_toEndOf="@id/home_input"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="16dp" />
<!-- 🚌 图片:居中偏上 -->
<ImageView
android:id="@+id/image_bus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/bus"
app:layout_constraintTop_toBottomOf="@id/home_input"
app:layout_constraintBottom_toTopOf="@+id/text_home"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="144dp"
android:layout_marginBottom="144dp"/>
<!-- ℹ️ 底部说明文字 -->
<TextView
android:id="@+id/text_home"
android:textColor="#777777"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:textAlignment="center"
android:textSize="11sp"
app:layout_constraintTop_toBottomOf="@id/image_bus"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
HomeFragment代码如下:package com.example.bus.ui.home;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.example.bus.MainActivity;
import com.example.bus.SearchResultActivity;
import com.example.bus.databinding.FragmentHomeBinding;
public class HomeFragment extends Fragment {
private FragmentHomeBinding binding;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
com.example.bus.ui.home.HomeViewModel homeViewModel =
new ViewModelProvider(this).get(com.example.bus.ui.home.HomeViewModel.class);
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
final TextView textView = binding.textHome;
homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
binding.homeSearch.setOnClickListener(v -> {
String keyword = binding.homeInput.getText().toString().trim();
if (keyword.isEmpty()) {
Toast.makeText(requireContext(), "请输入关键词", Toast.LENGTH_SHORT).show();
return;
}
// ✅ 使用 MainActivity 的统一权限流程
MainActivity activity = (MainActivity) requireActivity();
activity.ensureFineLocationPermission(() -> {
// ✅ 权限通过后再跳转
Intent intent = new Intent(requireContext(), SearchResultActivity.class);
intent.putExtra("keyword", keyword);
startActivity(intent);
});
});
return root;
}
@Override
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
}
最新发布
而margin表示的是view的左边缘与parent view的左边缘的距离
margin一般用来描述控件间位置关系,而padding一般描述控件内容和控件的位置关系。------