0

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));

Integer.toString()LogCat は、空の文字列を解析できないと言っています。ただし、その上の行で EditText の内容を取得したという事実から、これは、1) EditText から番号を取得するために間違った方法を使用しているか、2) numHolder が何らかの理由であると信じさせます。使用できません。

何がうまくいかないのですか?私は何時間もこれを理解しようとしてきました。

編集

と から削除staticしましEditTextonClickListener。今はうまくいくようです。

4

1 に答える 1

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));
于 2013-02-04T02:59:59.607 に答える