Java 如何说明在if中是否单击了按钮?
我想做一个函数,在这个函数中,如果按下不同活动上的一个按钮,那么将调用此活动之外的另一个函数。但如果未按下按钮,则不得执行该功能 在这里,我给大家留下我迄今为止所做工作的代码(java.file:Java 如何说明在if中是否单击了按钮?,java,android,Java,Android,我想做一个函数,在这个函数中,如果按下不同活动上的一个按钮,那么将调用此活动之外的另一个函数。但如果未按下按钮,则不得执行该功能 在这里,我给大家留下我迄今为止所做工作的代码(java.file: public class Comida2 extends AppCompatActivity implements Adaptador2.OnRecipeListener { private RecyclerView recyclerView1; List<Entidad2>
public class Comida2 extends AppCompatActivity implements Adaptador2.OnRecipeListener {
private RecyclerView recyclerView1;
List<Entidad2> listItems;
Adaptador2 adaptor;
private Entidad2 entidad1,entidad2,entidad3;
Button cambiarmenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_comida);
cambiarmenu = (Button) findViewById(R.id.boton_cambiarmenu);
recyclerView1 = findViewById(R.id.lv_1);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView1.setLayoutManager(layoutManager);
listItems = new ArrayList<>();
entidad1 = new Entidad2(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, 20);
entidad2 = new Entidad2(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, 50);
entidad3 = new Entidad2(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, 100);
listItems.add(entidad1);
listItems.add(entidad2);
listItems.add(entidad3);
adaptor = new Adaptador2(listItems, this);
recyclerView1.setAdapter(adaptor);
adaptor.notifyDataSetChanged();
//Clicado();
}
@Override
public void OnRecipe(int priority) {
if (priority == 20) {
Intent in = new Intent(this, Solomillo.class);
startActivity(in);
}
if (priority == 50) {
Intent in = new Intent(this, Entrecot.class);
startActivity(in);
}
if (priority == 100) {
Intent in = new Intent(this, Hamburguesa.class);
startActivity(in);
}
}
private void Clicado(){
final boolean[] numerillo = new boolean[1];
cambiarmenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numerillo[0] = true;
}
});
if (numerillo[0]) {
pickEntidad();
}
}
private void pickEntidad(){
final int random = new Random().nextInt(101);
int priority1 = entidad1.getPriority();
int priority2 = entidad2.getPriority();
int priority3 = entidad3.getPriority();
listItems.clear();
if(random < priority1){
listItems.add(entidad1);
}else if(random < priority2){
listItems.add(entidad2);
}else if (random <= priority3){
listItems.add(entidad3);
}
adaptor.notifyDataSetChanged();
}
}
公共类Comida2扩展AppCompatActivity实现Adapter2.OnRecipeListener{
私人回收站查看回收站查看1;
列出清单项目;
适配器2适配器;
私人实体2实体1、实体2、实体3;
按钮菜单;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setContentView(R.layout.activity_comida);
cambiarmenu=(按钮)findViewById(R.id.boton\u cambiarmenu);
recyclerView1=findViewById(R.id.lv_1);
LinearLayoutManager layoutManager=新的LinearLayoutManager(此);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
RecycleServiceW1.setLayoutManager(layoutManager);
listItems=new ArrayList();
entidad1=新Entidad2(R.drawable.calabacines_3,“Solomillo a la plancha”,“10分钟”,4,20);
entidad2=新entidad2(R.drawable.patatas_deluxe_Specialiadas_70523_300_150,“Entercot”,“15分钟”,2,50);
entidad3=新的Entidad2(R.drawable.tomate,“汉堡”,“2分钟”,5100);
listItems.add(entidad1);
listItems.add(entidad2);
listItems.add(entidad3);
适配器=新适配器2(列表项,本);
再循环器1.设置适配器(适配器);
adaptor.notifyDataSetChanged();
//Clicado();
}
@凌驾
公共void OnRecipe(int优先级){
如果(优先级==20){
Intent in=新Intent(这个,Solomillo.class);
星触觉(in);
}
如果(优先级==50){
Intent in=新的Intent(此,Entrecot.class);
星触觉(in);
}
如果(优先级==100){
Intent in=新的Intent(本,Hamburguesa.class);
星触觉(in);
}
}
私有无效Clicado(){
最终布尔值[]numerillo=新布尔值[1];
cambiarmenu.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
numerillo[0]=真;
}
});
if(数值[0]){
pickEntidad();
}
}
私有void pickEntidad(){
final int random=new random().nextInt(101);
int priority1=entidad1.getPriority();
int priority2=entidad2.getPriority();
int priority3=entidad3.getPriority();
listItems.clear();
if(随机<优先级1){
listItems.add(entidad1);
}else if(随机<优先级2){
listItems.add(entidad2);
}如果(随机我确实看到了你的另一篇帖子,现在我明白了你的问题
“名为Cambairmenu的按钮在另一个活动中,而不是在Comida2中”-您在这里所说的
你打电话的那一刻
setContentView(R.layout.activity_comida);
您只能声明该布局下的所有小部件(按钮、文本视图等),我相信R.id.boton_cambiarmenu(cambiarmenu button id)不属于该布局
因此,您需要在活动上声明cambiarmenu按钮,在该活动中声明其布局,并在其onclicklistener中调用它
new Comida2().pickEntidad(); //calling function pickEntidad from Comida2 class
试试这个,像这样换你的爸爸
private void pickEntidad(){
final int random = new Random().nextInt(101);
List<Entidad2> newlistItems = new ArrayList<>();
Entidad2 entidad1 = new Entidad2(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, 20);
Entidad2 entidad2 = new Entidad2(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, 50);
Entidad2 entidad3 = new Entidad2(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, 100);
int priority1 = entidad1.getPriority();
int priority2 = entidad2.getPriority();
int priority3 = entidad3.getPriority();
if(random < priority1){
newlistItems.add(entidad1);
}else if(random < priority2){
newlistItems.add(entidad2);
}else if (random <= priority3){
newlistItems.add(entidad3);
}
adaptor.notifyDataSetChanged(); //this another activity listview adaptor so it useless to notify it when you are not this activity
}
private void pickEntidad(){
final int random=new random().nextInt(101);
List newlistItems=new ArrayList();
Entidad2 entidad1=新Entidad2(R.drawable.calabacines_3,“Solomillo a la plancha”,“10分钟”,4,20);
Entidad2 Entidad2=新的Entidad2(R.drawable.patatas_deluxe_Specialiadas_70523_300_150,“Entercot”,“15分钟”,2,50);
Entidad2 entidad3=新的Entidad2(R.drawable.tomate,“汉堡”,“2分钟”,5100);
int priority1=entidad1.getPriority();
int priority2=entidad2.getPriority();
int priority3=entidad3.getPriority();
if(随机<优先级1){
newlistItems.add(entidad1);
}else if(随机<优先级2){
newlistItems.add(entidad2);
}否则如果(随机如果我理解正确,您在一个活动中有一个按钮,按下该按钮时,您希望从另一个类调用函数?这两个活动之间的关系是什么,例如,一个活动启动另一个活动吗?是的,就是这样,知道如何做吗?@soldforth我认为您只有一个活动/类,但有多个函数s/methods(检查术语)。如果您有不同的活动,可以将其发布到此处。请尝试直接调用pickEntidad();在cambiarmenu.setOnClickListener内部并删除numerillo我认为这会起作用,但当我在模拟器上运行它时,单击cambiarmenu按钮时会收到一条错误消息,这是:java.lang.NullPointerException:尝试调用虚拟方法'int com.test.platos_4.Entidad2.getPriority()'在com.test.platos_4.Comida2.pickEntidad(Comida2.java:113)的com.test.platos_4.Menu$3.onClick(Menu.java:44)
请帮助我我认为这会起作用,我需要你的帮助尝试在上面发布另一个活动。entidad1.getPriority();将产生错误,因为entidad1
是在创建comida2活动时声明的。我们所做的只是调用its函数pickEntidad()但我们从不调用onCreate。由于您的逻辑流,解决当前问题将产生另一个问题。listItems和Adapter也不会在PickentId上声明,因此它将创建空指针异常。我建议您为其他activitie可以调用的所有函数创建自己的类