我正在尝试在活动中打开一个活动。我成功地从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文件中存在所有按钮和引用。
提前谢谢。
答案 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.