我有一个视图,我正在加载,我的onCreate()方法看起来像这样:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
volume_id=getIntent().getStringExtra("volume_id");
language=getIntent().getStringExtra("language");
chapter=Integer.parseInt(getIntent().getStringExtra("chapter"));
book=getIntent().getStringExtra("book");
book_id=getIntent().getStringExtra("book_id");
final Button back=(Button)findViewById(R.id.backButton);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(Verse.this, "Back", Toast.LENGTH_LONG).show();
}});
final Button next=(Button)findViewById(R.id.forwardButton);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(Verse.this, "Next", Toast.LENGTH_LONG).show();
}});
}
出于某种原因,最后几行代码的添加,连接到我在布局文件中创建的两个按钮,正在使我的应用程序崩溃。我在错误日志中没有得到任何内容,所以我完全不知道发生了什么。
值得注意的是,如果没有在我的视图中添加代码的按钮,视图就可以正常加载,并且按钮会显示在它们应该的位置。
我添加这些按钮的方式是否正常?难道我做错了什么?我希望将GUI按钮连接到代码并不是很难......
由于
答案 0 :(得分:7)
回答您的问题:
您需要先致电setContentView(R.layout.main)
(或调用任何布局文件),然后才能致电findViewById
。此外,final
关键字可能会破坏您的代码,但这可能不是问题。
其他可能有用的信息:(您在技术上不需要阅读任何此类信息)
您的代码格式也非常混乱。考虑一下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get intent information
volume_id = getIntent().getStringExtra("volume_id");
language = getIntent().getStringExtra("language");
chapter = getIntent().getIntExtra("chapter")); // Changed from String to int
book = getIntent().getStringExtra("book");
book_id = getIntent().getStringExtra("book_id");
// Find views by ID
Button back = (Button) findViewById(R.id.backButton);
Button next = (Button) findViewById(R.id.forwardButton);
// Click listeners
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Back", Toast.LENGTH_LONG).show();
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Next", Toast.LENGTH_LONG).show();
}
});
}
注意:
1.每个=
之前和之后的空格
2.类型转换括号后的空格(例如“(Button)
”)
3.正确缩进
4.没有多余的空行(例如,在@Override和public void onClick之间
5.有用的评论
这些小东西使您的代码更容易从其他程序员那里阅读。
另外,您可能需要考虑将“chapter”作为intExtra传递,而不是从String中解析它。这浪费了宝贵的记忆。将实例字段String更改为int。最后,您可能还想考虑为整个类创建Buttons实例字段。