2

我的代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    Button btn = (Button) findViewById(R.id.btn_ok);

    btn.setOnClickListener(new Click());

}

我的班级女巫实现了 OnClickListener

但是在“单击”类的方法单击上.. 参数 View v.. 不起作用。使用方法 findViewById.. 总是返回 null :(

有什么帮助吗?

    public class Click implements View.OnClickListener
{       
    @Override
    public void onClick(View v) {       
        TextView view = (TextView) v.findViewById(R.id.resultado);
        EditText textoEdit = (EditText) v.findViewById(R.id.campo_texto);

        String texto = textoEdit.getText().toString();
        view.setText("Obrigado " + texto);  
    }
}

(对不起我的英语不好)

4

2 回答 2

3

该参数View v引用您的按钮。该按钮视图不包含带有R.id.resultado. 试试v.getRootView()

于 2013-04-04T00:03:54.273 回答
1

Button 没有任何子视图,因此当您调用findViewById. View v参数是产生触摸事件的视图。如果你想在你的布局中与TextViewand对话,你应该在其中找到它们并将它们存储为类成员。EditTextonCreate

尝试:

TextView mTexto;
EditText mTextoEdit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn = (Button) findViewById(R.id.btn_ok);
    btn.setOnClickListener(new Click());

    mTexto= (TextView) findViewById(R.id.resultado);
    mTextoEdit = (EditText) findViewById(R.id.campo_texto);
}

在你的听众中:

public class Click implements View.OnClickListener
{       
    @Override
    public void onClick(View v) {       
        String texto = mTextoEdit.getText();
        mTexto.setText("Obrigado " + texto);  
    }
}
于 2013-04-04T00:04:45.190 回答