Android - 为什么我的代码不起作用 - FindViewById?

时间:2014-04-03 16:01:44

标签: java android

我是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;按钮)仍为空,我不知道为什么? (或者我应该怎么做?或者我做错了什么?或者我的代码中缺少什么?)

4 个答案:

答案 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),因为我在创建辅助布局(-_-)'时出错了。

感谢所有试图帮助我在代码中解决此问题的人。