此代码未调用下一个活动。我不明白为什么,但是此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);
}
}
答案 0 :(得分:2)
您似乎在height
中添加了一堆按钮,但实际上并没有在视图层次结构中添加LinearLayout
。您可以尝试致电layout
然后单击按钮吗?
答案 1 :(得分:1)
我认为您可以使用以下示例:-
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:
startActivity(new Intent(this, Doctor.class));
break;
}
}
}
答案 2 :(得分:0)
查看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
答案 3 :(得分:0)
在 onClick 方法中,您没有获得单击哪个视图的ID。因此,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;
}
}
答案 4 :(得分:0)
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(OneActivity.this, TwoActivity.class);
startActivity(intent);
}
});