猿问

第二个活动不会启动

我正在参加 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

但我不确定这是否真的与启动第二个活动的问题有关。



慕标琳琳
浏览 140回答 3
3回答

偶然的你

如果onActivityResult到达您的位置,则表示 SecondActivity 已启动。在完成第二个活动之前,您只需检查要在其中做什么。例如,对于上面的代码,您在创建活动时调用完成活动。您的代码有效,您只需找到放置此代码的正确位置:Intent returnIntent = new Intent();         returnIntent.putExtra(EXTRA_RETURN, BTN1.getText().toString());         setResult(RESULT_OK, returnIntent);         finish();按照你的逻辑。我认为这会有所帮助。

慕容3067478

对于我所看到的,我想您只是在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();我还没有试过代码,但我希望这对你有帮助!

长风秋雁

如果第二个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();之后。
随时随地看视频慕课网APP

相关分类

Java
我要回答