1

アプリケーション内のロジックを別のクラスにプルして、アプリケーション内でロジックを再利用しようとしていますが、やりたいことが可能かどうかわかりません。値が null にならないようにするために PercentageCalc.java で setContentView 関数を呼び出す必要があることは理解していますが、Keypad クラスでそれを渡す方法はありますか?

NullPointerException は Keypad クラスの最初の行にあります。

PercentageCalc.java

Keypad keypad = new Keypad();

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

    /** Initialize variables for widget handles */
    ...
    keypad.initializeWidgets();
}

キーパッド.java

Button button_1, button_2, button_3, button_4, button_5, button_6, button_7, button_8,
        button_9, button_0, button_clr, button_del, button_period;

public void initializeWidgets()
{
    button_1 = (Button)findViewById(R.id.b_1);
    button_2 = (Button)findViewById(R.id.b_2);
    button_3 = (Button)findViewById(R.id.b_3);
    button_4 = (Button)findViewById(R.id.b_4);
    button_5 = (Button)findViewById(R.id.b_5);
    button_6 = (Button)findViewById(R.id.b_6);
    button_7 = (Button)findViewById(R.id.b_7);
    button_8 = (Button)findViewById(R.id.b_8);
    button_9 = (Button)findViewById(R.id.b_9);
    button_clr = (Button)findViewById(R.id.b_clr);
    button_0 = (Button)findViewById(R.id.b_0);
    button_del = (Button)findViewById(R.id.b_del);
    button_period = (Button)findViewById(R.id.b_period);
}
4

1 に答える 1

0

適切なアプローチは、コメントで言及されている tyczj のとおりです。ただし、ボタン (スニペットの R.id.percentage_calc_container) を含むメイン ビューを Keypad の initializeWidgets() メソッドに渡し、それに対して findViewById() を呼び出すことができます。

PercentageCalc.java

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

    /** Initialize variables for widget handles */
    ...
    View v = findViewById(R.id.percentage_calc_container);
    keypad.initializeWidgets();
}

キーパッド.java

public void initializeWidgets(View v)
{
    button_1 = (Button)v.findViewById(R.id.b_1);
    button_2 = (Button)v.findViewById(R.id.b_2);
    button_3 = (Button)v.findViewById(R.id.b_3);
    button_4 = (Button)v.findViewById(R.id.b_4);
    button_5 = (Button)v.findViewById(R.id.b_5);
    button_6 = (Button)v.findViewById(R.id.b_6);
    button_7 = (Button)v.findViewById(R.id.b_7);
    button_8 = (Button)v.findViewById(R.id.b_8);
    button_9 = (Button)v.findViewById(R.id.b_9);
    button_clr = (Button)v.findViewById(R.id.b_clr);
    button_0 = (Button)v.findViewById(R.id.b_0);
    button_del = (Button)v.findViewById(R.id.b_del);
    button_period = (Button)v.findViewById(R.id.b_period);
}
于 2013-09-07T02:57:25.727 に答える