Android 片段布局中的按钮事件
我对安卓相当陌生,我通过阅读Deitel的书来学习它。我决定开发一个带有标签的应用程序,我正在使用片段(如你所见) 我在书中/在互联网上读到了如何为按钮实现Android 片段布局中的按钮事件,android,xml,android-layout,android-fragments,Android,Xml,Android Layout,Android Fragments,我对安卓相当陌生,我通过阅读Deitel的书来学习它。我决定开发一个带有标签的应用程序,我正在使用片段(如你所见) 我在书中/在互联网上读到了如何为按钮实现onClick事件,但当我试图在Android手机上运行该应用程序时,它崩溃了 代码 public class GamesFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup cont
onClick
事件,但当我试图在Android手机上运行该应用程序时,它崩溃了
代码
public class GamesFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_games, container, false);
Button button = (Button) view.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText val1 = (EditText) v.findViewById(R.id.editText1);
EditText val2 = (EditText) v.findViewById(R.id.editText2);
EditText val3 = (EditText) v.findViewById(R.id.editText3);
EditText sol1 = (EditText) v.findViewById(R.id.editText4);
EditText sol2 = (EditText) v.findViewById(R.id.editText5);
//Solve the equation using a method of a class I created
equazioni2grado Equazione = new equazioni2grado();
Equazione.solveEquation(val1.getText().toString(), val2.getText().toString(), val3.getText().toString());
//Show the results
sol1.setText( Equazione.getSol1AsFraction() );
sol2.setText( Equazione.getSol1AsFraction() );
}
});
return view;
}
}
XML
我将XML放在一个粘贴箱中,因为它相当长。XML如下所示:
我听说我可以在XML或java文件中定义onClick
事件,这两种方法都可以。正如你所看到的,我是以编程的方式做这件事的
我找不到我的错误在哪里。有什么想法吗
注意:对象Equazione具有以下方法:
public void解算方程(字符串x、字符串y、字符串z){…}
EditText val1 = (EditText) v.findViewById(R.id.editText1);
使用视图而不是v,如下所示
EditText val1 = (EditText) view.findViewById(R.id.editText1);
请尝试以下代码:
public class GamesFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_games, container, false);
Button button = (Button) view.findViewById(R.id.button1);
EditText val1 = (EditText) view.findViewById(R.id.editText1);
EditText val2 = (EditText) view.findViewById(R.id.editText2);
EditText val3 = (EditText) view.findViewById(R.id.editText3);
EditText sol1 = (EditText) view.findViewById(R.id.editText4);
EditText sol2 = (EditText) view.findViewById(R.id.editText5);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Solve the equation using a method of a class I created
equazioni2grado Equazione = new equazioni2grado();
Equazione.solveEquation(val1.getText().toString(), val2.getText().toString(), val3.getText().toString());
//Show the results
sol1.setText( Equazione.getSol1AsFraction() );
sol2.setText( Equazione.getSol1AsFraction() );
}
});
return view;
}
}
您可以粘贴LogCat吗?您需要在表示已充气布局的视图上调用findViewById。在本例中,它是从inflater.inflate()返回的对象“view” 一种方法是将view声明为最终变量,然后将调用“v.findviewbyd…”替换为“view.findviewbyd…”