1

我正在尝试将我的应用程序中的逻辑拉到一个单独的类中以重用我的应用程序中的逻辑,我不确定我想要做的事情是否可行。我知道我需要调用 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 回答