Android studio 安卓工作室开启活动

Android studio 安卓工作室开启活动,android-studio,android-activity,Android Studio,Android Activity,我正在尝试在活动中使用打开活动。我成功地完成了从MainActivity到的操作,但由于某些原因,这不允许我再次这样做 我对这个很陌生,请帮帮我 package com.example.edonfreiner.siddur; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; impo

我正在尝试在活动中使用打开活动。我成功地完成了从MainActivity到的操作,但由于某些原因,这不允许我再次这样做

我对这个很陌生,请帮帮我

package com.example.edonfreiner.siddur;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Davening extends AppCompatActivity {
    Button shacharisButton, minchaButton, maarivButton;

    public void openShacharis() {
        shacharisButton = (Button) findViewById(R.id.shacharis);
        shacharisButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent open = new Intent(Davening.this, Shacharis.class);

                startActivity(open);



            }
        });
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_davening);

        openShacharis();


    }
}
这是我的类的代码,没有错误,这意味着所有按钮和引用都存在于XML文件中


提前感谢。

您构建的逻辑是错误的,因为您在onCreate中调用的函数不会激活其中的onClick。当您单击对象时,它不会激活onClick,因为它封装在openShacharis中。因此,解决方案是从openShacharis中删除onClick,方法如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_davening);

    shacharisButton = (Button) findViewById(R.id.shacharis);
    shacharisButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openShacharis();
        }
    });
}

public void openShacharis() {
    Intent open = new Intent(Davening.this, Shacharis.class);
    startActivity(open);
}

所有活动都需要在Android清单上注册。 正如你在评论中所说,如果你没有注册它,它将不会打开


可能会帮助你。特别是它在AndroidManifest.xml中添加所需元素的部分。

您的android清单上是否声明了您的
Shacharis
活动?你有日志吗?我没有,非常感谢。这到底有什么作用?代码中使用的名称有误导性,但逻辑是正确的。在
onCreate
过程中,他调用
openShacharis
,该函数使用回调函数设置click listener以打开活动。我同意你的命名,因为他的
openShacharis
不是打开而是注册了听众,但这似乎不是他问题的根本原因。这很奇怪,因为OP说没有错误。若未在清单上注册,则会引发错误。感谢您的评论。您是对的,如果活动未在清单上注册,您将在日志中看到一个错误。我的假设是OP错过了它,因为它不会使应用程序崩溃或导致任何编译警告。