Метод OnClick не запускает новое действие - PullRequest
1 голос
/ 14 октября 2019

Этот код не вызывает следующее действие. Я не понимаю почему, но этот метод onClick не запускает следующее действие, хотя тот же код в других действиях делает. Протестировал вызов других действий, и это не сработало даже. Кнопка создана, но когда я нажимаю на нее, ничего не происходит.

Редактировать: Люди, когда мы задаем вопрос о коде, мы хотим знать, что не так, почему не так, как исправить, почему и почему иэто исправление работает. Мы хотим понять и проблему, и решение, и просто отбросить только один пример кода, поскольку ответ не совсем помогает некоторым людям. Я благодарю всех вас за то, что вы потратили время на мой вопрос и помогли мне решить эту проблему, но помните эти слова, когда отвечаете на чей-то вопрос.

package com.example.conjuradortormenta;


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

public class ListadePersonagens extends AppCompatActivity implements View.OnClickListener{

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

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        // Using shared preferences, we get information about the characters
        SharedPreferences informacoesdepersonagem = getSharedPreferences("com.example.conjuradortormenta_informaçoes_de_personagem", MODE_PRIVATE);
        int num = informacoesdepersonagem.getInt("numero_de_personagens", 0);
        String nome, resumo;

        Button botao[]= new Button[num+1];

        if(num!=0)
        {
            for(int i=1; i<=num; i++)// cria os botões de cada personagem
            {
                nome = informaçõesdepersonagem.getString("nome_personagem"+(i+1), "Nenhum");
                resumo = informaçõesdepersonagem.getString("raça_personagem"+(i+1), "Nenhum")+ " " + informaçõesdepersonagem.getString("classe_personagem"+(i+1), "Nenhum") + " " + Integer.toString(informaçõesdepersonagem.getInt("nivel_personagem"+(i+1), 0));

                botao[i]=new Button(this);
                botao[i].setText(nome+" "+resumo);
                botao[i].setId(i);

                botao[i].setOnClickListener(this);
                layout.addView(botao[i]);
            }
        }

        botao[0]=new Button(this);
        botao[0].setText("Criar Novo");
        botao[0].setId(1);

        botao[0].setOnClickListener(this);

        layout.addView(botao[0]);
    }


    @Override
    public void onClick(View view)
    {
        Intent nova = new Intent (this, CriadordePersonagem.class);
        startActivity(nova);
    }



}

Ответы [ 5 ]

2 голосов
/ 14 октября 2019

Вы, кажется, добавляете несколько кнопок к вашему LinearLayout, но на самом деле вы не добавляете layout к вашей иерархии представлений. Можете ли вы попробовать позвонить setContentView(layout) и затем нажать на кнопки?

1 голос
/ 14 октября 2019

Я думаю, вы можете использовать этот пример: -



     public class MainActivity extends AppCompatActivity implements View.OnClickListener {
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

            Button button = findViewById(R.id.button);
            button.setOnClickListener(this);
         }
        @Override
         public void onClick(View v) {
             switch (v.getId())
             {
                 case R.id.button:
                    <b>startActivity(new Intent(this, Doctor.class));</b>
                    break;
             }
         }
     }
0 голосов
/ 14 октября 2019
 button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(OneActivity.this, TwoActivity.class);
            startActivity(intent);

        }
    });
0 голосов
/ 14 октября 2019

В методе onClick вы не получили идентификатор того вида, по которому щелкали. Таким образом, Android не может знать onClick для какого просмотра. Вы должны сделать это:

@Override
public void onClick(View view){
    switch (view.getId()){
        case R.id.button:
            Intent nova = new Intent (this, CriadordePersonagem.class);
            startActivity(nova);
        break;
    }
}
0 голосов
/ 14 октября 2019

Было бы полезно увидеть ваш XML layout, но я думаю, что вы нигде не добавили макет.

Ваш layout кажется R.layout.activity_listade_personagens, так что если вы хотитеотредактируйте его, вы должны получить его вместо создания нового:

setContentView(R.layout.activity_listade_personagens);

LinearLayout layout = findViewById(R.layout.activity_listade_personagens);

layout.setOrientation(LinearLayout.VERTICAL);
// Rest of your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...