为了账号安全,请及时绑定邮箱和手机立即绑定

第二个活动不会启动

第二个活动不会启动

慕标琳琳 2021-11-24 18:58:42
我正在参加 Android Fundamentals 2.2 Coding Challenge,但无法使用前面课程中描述的逻辑启动第二个活动。这是我的第一个活动的代码:package com.homing.a22codingchallenge;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private static final String LOG_TAG = MainActivity.class.getSimpleName();    public static final String EXTRA_MESSAGE = "com.homing.mainactivity.extra.message";    public static final int TEXT_REQUEST = 1;    private TextView TV1, TV2, TV3, TV4, TV5, TV6, TV7, TV8, TV9, TV10;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TV1 = findViewById(R.id.TV1);        TV2 = findViewById(R.id.TV2);        TV3 = findViewById(R.id.TV3);        TV4 = findViewById(R.id.TV4);        TV5 = findViewById(R.id.TV5);        TV6 = findViewById(R.id.TV6);        TV7 = findViewById(R.id.TV7);        TV8 = findViewById(R.id.TV8);        TV9 = findViewById(R.id.TV9);        TV10 = findViewById(R.id.TV10);    }    }我尝试将代码与我在指南中走过的项目进行比较,就我所见,一切都是一致的。与我的问题类似的帖子提出了一些没有意义的建议,因为我的第一个项目运行良好。我已经放弃了调试日志并在 Logcat 中确认按钮正在注册点击,它甚至通过 startActivityForResult() 方法在块中运行。有一个 Logcat 条目似乎相关,但搜索并没有真正产生任何对我有用的东西:2018-10-18 07:01:37.386 1624-1677/system_process W/ActivityManager:无法启动服务意图 { act=com.google.android.gms.drive.ApiService.RESET_AFTER_BOOT flg=0x4 cmp=com.google.android .gms/.drive.api.ApiService(有附加功能)} U=0:未找到从那以后,我尝试多次重现此错误,但未能重现。我在尝试中看到的唯一条目是以下几行:2018-10-18 07:00:44.979 1369-1401/? W/audio_hw_generic: 没有向 HAL 提供足够的数据,预期位置 754681 ,只写了 603360但我不确定这是否真的与启动第二个活动的问题有关。
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

如果onActivityResult到达您的位置,则表示 SecondActivity 已启动。在完成第二个活动之前,您只需检查要在其中做什么。例如,对于上面的代码,您在创建活动时调用完成活动。

您的代码有效,您只需找到放置此代码的正确位置:

Intent returnIntent = new Intent();
        returnIntent.putExtra(EXTRA_RETURN, BTN1.getText().toString());
        setResult(RESULT_OK, returnIntent);
        finish();

按照你的逻辑。

我认为这会有所帮助。


查看完整回答
反对 回复 2021-11-24
?
慕容3067478

TA贡献1773条经验 获得超3个赞

对于我所看到的,我想您只是在activity_main布局中的onClick属性中启动 SecondActivity ,并且一旦进入 SecondActivity,一旦 onCreate 发生,您只需在此处调用finish():


Intent returnIntent = new Intent();

returnIntent.putExtra(EXTRA_RETURN, BTN1.getText().toString());

setResult(RESULT_OK, returnIntent);

finish();

因此,一旦创建了活动,它就完成了......


也许您想要做的是返回 SecondActivity 中的按钮单击文本?


就像是:


    BTN1.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            Intent returnIntent = new Intent();

            returnIntent.putExtra(EXTRA_RETURN, BTN1.getText().toString());

            setResult(RESULT_OK, returnIntent);

            finish();

        }

    });

也许您应该为每个按钮添加一个onClick属性,并添加对一个方法的调用,该方法将获取单击的按钮的文本,如下所示:


public void clickButton(View view) {

    Intent returnIntent = new Intent();

    returnIntent.putExtra(EXTRA_RETURN, ((Button) view).getText().toString());

    setResult(RESULT_OK, returnIntent);

    finish();

我还没有试过代码,但我希望这对你有帮助!


查看完整回答
反对 回复 2021-11-24
?
长风秋雁

TA贡献1757条经验 获得超7个赞

如果第二个Activity没有添加到AndroidManifest.xml,IDE 会抱怨它没有添加。

但是,如果您得到:Button clicked在日志中,那么 mainActivity没有问题,但是,请检查第二个中的代码Activity

Intent returnIntent = new Intent();
        returnIntent.putExtra(EXTRA_RETURN, BTN1.getText().toString());
        setResult(RESULT_OK, returnIntent);
        finish();

一旦执行了putExtra(),它实际上完成了Activity:finish();之后。


查看完整回答
反对 回复 2021-11-24
  • 3 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信