Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何说明在if中是否单击了按钮?_Java_Android - Fatal编程技术网

Java 如何说明在if中是否单击了按钮?

Java 如何说明在if中是否单击了按钮?,java,android,Java,Android,我想做一个函数,在这个函数中,如果按下不同活动上的一个按钮,那么将调用此活动之外的另一个函数。但如果未按下按钮,则不得执行该功能 在这里,我给大家留下我迄今为止所做工作的代码(java.file: public class Comida2 extends AppCompatActivity implements Adaptador2.OnRecipeListener { private RecyclerView recyclerView1; List<Entidad2>

我想做一个函数,在这个函数中,如果按下不同活动上的一个按钮,那么将调用此活动之外的另一个函数。但如果未按下按钮,则不得执行该功能

在这里,我给大家留下我迄今为止所做工作的代码(java.file:

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可以调用的所有函数创建自己的类