Ste*_* J. 1 debugging android onclick listener actionlistener
我有一个视图,我正在加载,我的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();
}});
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,最后几行代码的添加,连接到我在布局文件中创建的两个按钮,正在使我的应用程序崩溃.我在错误日志中没有得到任何内容,所以我完全不知道发生了什么.
值得注意的是,如果没有在我的视图中添加代码的按钮,视图会很好地加载,并且按钮会显示在它们应该的位置.
我添加这些按钮的方式是否正常?难道我做错了什么?我希望将GUI按钮连接到代码并不是那么困难......
谢谢
回答你的问题:
在打电话之前,您需要打电话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();
}
});
}
Run Code Online (Sandbox Code Playgroud)
注意:1.每个前后的空格=
2.类型转换括号后的空格(例如" (Button)")3.正确的缩进4.没有多余的空行(例如,在@Override和public void onClick 5之间.有用的评论
这些小东西使您的代码更容易从其他程序员那里阅读.
此外,您可能需要考虑将"chapter"作为intExtra传递,而不是从String中解析它.这浪费了宝贵的记忆.将实例字段String更改为int.最后,您可能还想考虑为整个类创建Buttons实例字段.
| 归档时间: |
|
| 查看次数: |
3470 次 |
| 最近记录: |