我是Android编程的新手,我在这里有一个问题,我的代码不起作用,但根据我的书,它应该......
我认为这是一个菜鸟问题,但对我来说,了解它为什么不起作用以及如何解决这个问题非常重要。
我的问题是findViewById()
没有返回任何值,我尝试访问的按钮无法用于我的应用。
这是我的代码:
private Button mButtontrue=null;
(more code...);
mButtontrue=(Button) findViewById(R.id.button_true);
mButtontrue.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(QuizActivity.this, R.string.correct_toast, Toast.LENGTH_SHORT).show();
}
});
而且......这是我的R级......
public static final class id {
(more code...)
public static final int button_true=0x7f05003d;}
而且......这是我的xml
<Button
android:id="@+id/button_true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_true"/>
但事实是mButtontrue(以及&#34; false&#34;按钮)仍为空,我不知道为什么? (或者我应该怎么做?或者我做错了什么?或者我的代码中缺少什么?)
答案 0 :(得分:0)
你是否在活动类中调用了这个(R.id.button_true)?如果不是,您将需要传递上下文。
你也尝试过:
this.FindViewById
您可能还想检查您的XML文件是否已保存,因为修改它并在项目上运行clean:)
答案 1 :(得分:0)
您必须确保该按钮的父布局是什么。如果您在“AlertDialog”,“PromptDialog”,“Adapters”,“Sliding Drawer”或类似布局膨胀到主布局的情况下使用该按钮,则必须使用布局inflater作为按钮。
LayoutInflater li = LayoutInflater.from(this);
final View view = li.inflat(R.layout.your_main_layout, null);
mButtontrue = (Button) view.findViewById(R.id.button_true);
希望这些帮助!
答案 2 :(得分:0)
你在哪里打电话findViewById()
?
似乎你没有打电话,因此你的听众是null
试试这个:
public class AppActivity extends Activity {
Button mButtontrue;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
addListenerOnButton();
}
public void addListenerOnButton() {
mButtontrue=(Button) findViewById(R.id.button_true);
mButtontrue.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(QuizActivity.this, R.string.correct_toast, Toast.LENGTH_SHORT).show();
}
});
}
}
答案 3 :(得分:0)
基于用户@Ragunandhan,我解决了我的问题,因为我没有给正确的布局充气。我的代码没问题,除了这个
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondary);
mButtontrue=(Button) findViewById(R.id.button_true);
它应该是
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButtontrue=(Button) findViewById(R.id.button_true);
请注意,我刚刚在布局中更改了一个单词(secondary - &gt; main),因为我在创建辅助布局(-_-)'时出错了。
感谢所有试图帮助我在代码中解决此问题的人。