Android Studio打开活动

时间:2017-05-29 02:07:28

标签: 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;
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文件中存在所有按钮和引用。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您构建的逻辑是错误的,因为您在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);
}

答案 1 :(得分:0)

所有活动都需要在Android Manifest上注册。 正如您在评论中所述,如果您没有注册,它就不会打开。

This documentation可能对您有所帮助。特别是Adds the required <activity> element in AndroidManifest.xml.

的部分