You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

继承FragmentActivity的两个类跳转时startActivity点击无响应如何解决

问题根因
  • 点击事件绑定错误:仅给R.id.editTextFrom输入框设置了点击监听器,R.id.imageViewbfrom、R.id.NexttbtnLP2两个控件完全没有绑定点击事件,点击这两个控件自然不会触发任何跳转逻辑
  • 逻辑顺序错误:就算点击绑定了监听的from输入框,代码会先执行startActivityForResult调起谷歌地址自动补全页面直接跳走,后续的switch判断逻辑根本没有执行机会
  • 判断逻辑放置错误:把不同控件的点击判断写在了from这一个控件的点击回调里,就算触发回调也只会匹配到from的控件id,永远走不到另外两个跳转分支
修复方案

将点击事件抽离统一管理,给所有需要响应点击的控件绑定监听器即可,修复后代码如下:

public class LocationPicker_2 extends FragmentActivity implements OnMapReadyCallback, View.OnClickListener {
    // 原有成员变量声明保持不变
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location_picker2);

        supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        supportMapFragment.getMapAsync(this);

        // 初始化所有需要交互的控件
        from = findViewById(R.id.editTextFrom);
        ImageView ivBackFrom = findViewById(R.id.imageViewbfrom);
        Button btnNext = findViewById(R.id.NexttbtnLP2);
        
        Places.initialize(getApplicationContext(),"AIzaSyCIwPlfTKNCGDcoMuOWwNTTyG5tnI_MyqM");
        // 给所有控件绑定统一的点击监听器
        from.setOnClickListener(this);
        ivBackFrom.setOnClickListener(this);
        btnNext.setOnClickListener(this);
    }

    // 统一处理所有点击逻辑
    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.editTextFrom:
                // 只有点击输入框时才调起地址自动补全
                field = Arrays.asList(Place.Field.ADDRESS,Place.Field.NAME,Place.Field.LAT_LNG);
                Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY,field).build(LocationPicker_2.this);
                startActivityForResult(intent,place_picker_req_code);
                break;
            case R.id.imageViewbfrom:
                startActivity(new Intent(LocationPicker_2.this,LocationPicker.class));
                break;
            case R.id.NexttbtnLP2:
                startActivity(new Intent(LocationPicker_2.this,Selectdate.class));
                break;
        }
    }

    // 其他原有逻辑保持不变
}

额外注意:请确认AndroidManifest.xml中已经完成LocationPicker、Selectdate两个Activity的注册,未注册的Activity也会导致跳转无响应甚至崩溃。

内容的提问来源于stack exchange,提问作者Raaid Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:45:00