我正在使用Eclipse的活动创建者中的标题条+滑动模板。这是我的片段代码:
public static class FactorFragment extends Fragment {
static EditText numHolder;
Button btnFactor;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Activity me = getActivity();
// Create the layout
// Create the views
RelativeLayout holder = new RelativeLayout(me);
numHolder = new EditText(me);
numHolder.setId(1);
btnFactor = new Button(me);
btnFactor.setId(2);
// Style the RelativeLayout
holder.setLayoutParams(new RelativeLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
// Style the EditText
RelativeLayout.LayoutParams edittext = new RelativeLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
edittext.addRule(RelativeLayout.ALIGN_BOTTOM, btnFactor.getId());
edittext.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
edittext.addRule(RelativeLayout.LEFT_OF, btnFactor.getId());
numHolder.setEms(10);
numHolder.setInputType(InputType.TYPE_CLASS_NUMBER);
numHolder.setLayoutParams(edittext);
// Style the button
RelativeLayout.LayoutParams btn = new RelativeLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
btn.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
btn.addRule(RelativeLayout.ALIGN_PARENT_TOP);
btnFactor.setText("Factor");
btnFactor.setLayoutParams(btn);
btnFactor.setOnClickListener(onClick);
// Add them to the layout
holder.addView(numHolder);
holder.addView(btnFactor);
return holder;
}
static OnClickListener onClick = new OnClickListener() {
public void onClick(View v) {
int num = Integer.parseInt(numHolder.getText().toString());
Log.e("hi", Integer.toString(num));
}
};
}
如您所见,我正在创建一个名为numHolder的EditText,它将保存数值。我遇到的问题是当我点击按钮时,我在这一行上收到一个强制关闭错误:
Log.e("hi", Integer.toString(num));
LogCat告诉我Integer.toString()
无法解析空字符串。但是,由于我在上面的行中得到EditText的内容,这使我相信1)我使用错误的方法从EditText中获取数字或2)numHolder是出于某种原因无法使用。
出了什么问题?我一直试图解决这个问题几个小时。
修改:
我从static
和EditText
中删除了onClickListener
。它似乎现在有效。
答案 0 :(得分:0)
您应该使用numHolder.getText().toString()
来获取EditText numHolder的内容。
首先应检查EditText的内容,然后再将其转换为整数。
int num = 0;
try {
String numText = numHolder.getText().toString();
Log.d("Hi", "Text obtained is: " + numText);
num = Integer.parseInt(numText);
} catch (NumberFormatException e) {
// Handle exception
}
Log.e("hi", Integer.toString(num));