Android - SeekBar NullPointErexception - 我不知道为什么。

时间:2015-04-17 01:26:10

标签: java android

为什么我在第86行收到SeekBar NullPointerException?我不明白。我在哪里俯瞰?我认为下面的两个班轮代码会照顾它:

    // Get SeekBar references
    mRoiYearSeekBar = (SeekBar) findViewById(R.id.roiYearSeekBar);
    mRoiMonthSeekBar = (SeekBar) findViewById(R.id.roiMonthSeekBar);

非常感谢任何反馈。

这是一个更大的代码块,问题似乎位于:

  

公共类RoiCalc扩展了Activity {

private EditText mRoiInitialInvestmentEditText;
private EditText mRoiReturnAmountEditText;
private SeekBar mRoiYearSeekBar;
private SeekBar mRoiMonthSeekBar;
private TextView mRoiYearTextView;
private TextView mRoiMonthTextView;
private Button mRoiResetButton;
private Button mRoiCalculateButton;

public BigDecimal benefit;
public BigDecimal cost;
private BigDecimal year;
private BigDecimal month;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    // Get transitions
    getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);


    setContentView(R.layout.activity_roi_calc);


    RoiInputCalcFrag inputFrag = new RoiInputCalcFrag();

    getFragmentManager().beginTransaction().add(R.id.roiMaster, inputFrag).commit();


    // Enable "Up" button
    getActionBar().setDisplayHomeAsUpEnabled(true);

    // Get EditText references
    mRoiInitialInvestmentEditText = (EditText) findViewById(R.id.roiInitialInvestmentEditText);
    mRoiReturnAmountEditText = (EditText) findViewById(R.id.roiReturnAmountEditText);


    // Get SeekBar references
    mRoiYearSeekBar = (SeekBar) findViewById(R.id.roiYearSeekBar);
    mRoiMonthSeekBar = (SeekBar) findViewById(R.id.roiMonthSeekBar);


    mRoiYearTextView = (TextView) findViewById(R.id.roiYearTextView);
    mRoiMonthTextView = (TextView) findViewById(R.id.roiMonthTextView);

    // Get Button references
    mRoiResetButton = (Button) findViewById(R.id.roiResetButton);
    mRoiCalculateButton = (Button) findViewById(R.id.roiCalculateButton);

    // Set SeekBar progress to the default value on the layout
    mRoiYearTextView.setText(String.valueOf(mRoiYearSeekBar.getProgress()));
    mRoiMonthTextView.setText(String.valueOf(mRoiMonthSeekBar.getProgress()));

logcat的

04-16 22:27:52.499: E/WifiStateMachine(547): WifiStateMachine CMD_START_SCAN source -2 txSuccessRate=1.20 rxSuccessRate=0.67 targetRoamBSSID=any RSSI=-72
04-16 22:27:53.429: I/ActivityManager(547): START u0 {cmp=uk.co.example.calculator/.activities.RoiCalc} from uid 10156 on display 0
04-16 22:27:53.466: D/AndroidRuntime(9117): Shutting down VM
04-16 22:27:53.467: E/AndroidRuntime(9117): FATAL EXCEPTION: main
04-16 22:27:53.467: E/AndroidRuntime(9117): Process: uk.co.example.calculator, PID: 9117
04-16 22:27:53.467: E/AndroidRuntime(9117): java.lang.RuntimeException: Unable to start activity ComponentInfo{uk.co.example.calculator/uk.co.example.calculator.activities.RoiCalc}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.SeekBar.getProgress()' on a null object reference
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.os.Handler.dispatchMessage(Handler.java:102)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.os.Looper.loop(Looper.java:135)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread.main(ActivityThread.java:5221)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at java.lang.reflect.Method.invoke(Native Method)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at java.lang.reflect.Method.invoke(Method.java:372)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-16 22:27:53.467: E/AndroidRuntime(9117): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.SeekBar.getProgress()' on a null object reference
04-16 22:27:53.467: E/AndroidRuntime(9117):     at uk.co.example.calculator.activities.RoiCalc.onCreate(RoiCalc.java:86)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.Activity.performCreate(Activity.java:5933)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
04-16 22:27:53.467: E/AndroidRuntime(9117):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
04-16 22:27:53.467: E/AndroidRuntime(9117):     ... 10 more
04-16 22:27:53.469: W/ActivityManager(547):   Force finishing activity uk.co.example.calculator/.activities.RoiCalc
04-16 22:27:53.477: W/ActivityManager(547):   Force finishing activity uk.co.example.calculator/.MainActivity

2 个答案:

答案 0 :(得分:3)

mRoiYearSeekBar = (SeekBar) findViewById(R.id.roiYearSeekBar);

如果ID roiYearSeekBar不存在,mRoiYearSeekBar将为空。

您的一个搜索栏ID不存在,因此SeekBar为空。

答案 1 :(得分:1)

对于那些好奇的人,我收到错误的原因是因为" SeekBar"位于一个片段而不是活动上。因此,对于我访问SeekBar,我必须通过" OnCreateView"片段本身的方法而不是包含活动的方法" OnCreate"方法。这是一个简单的疏忽。