Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 找不到错误_Android_Nullpointerexception - Fatal编程技术网

Android 找不到错误

Android 找不到错误,android,nullpointerexception,Android,Nullpointerexception,错误是: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{lol2dubs.stevemoa/lol2dubs.stevemoa.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)

错误是:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{lol2dubs.stevemoa/lol2dubs.stevemoa.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
代码是:

public class MainActivity extends AppCompatActivity {
double MOA;
TextView turretClicks = (TextView)findViewById(R.id.turretClicks);
boolean noMOA;

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



    EditText range = (EditText) findViewById(R.id.rangeEntry);
    String stringRange = range.getText().toString();
    int finalRange = Integer.parseInt(stringRange);
    if(finalRange <= 200) {
        MOA = 0;
    }
    if(finalRange > 200 && finalRange <= 225){
        MOA = .5;
    }
    if(finalRange > 225 && finalRange <= 250) {
        MOA = 1;
    }
    if(finalRange > 250 && finalRange <= 275) {
        MOA = 1.65;
    }
    if(finalRange > 275 && finalRange <= 300) {
        MOA = 2.25;
    }
    if(finalRange > 300 && finalRange <= 325) {
        MOA = 2.8;
    }
    if(finalRange > 325 && finalRange <= 350) {
        MOA = 3.5;
    }
    if(finalRange > 350 && finalRange <= 375) {
        MOA = 4.0;
    }
    if(finalRange > 375 && finalRange <= 400) {
        MOA = 4.75;
    }
    if(finalRange > 400 && finalRange <= 425) {
        MOA = 5.50;
    }
    if(finalRange > 425 && finalRange <= 450) {
        MOA = 6.25;
    }
    if(finalRange > 450 && finalRange <= 475) {
        MOA = 7.0;
    }
    if(finalRange > 475 && finalRange <= 500) {
        MOA = 7.5;
    }
    if(finalRange > 500 && finalRange <= 525) {
        MOA = 8.25;
    }
    if(finalRange > 525 && finalRange <= 550) {
        MOA = 9.0;
    }
    if(finalRange > 550 && finalRange <= 575) {
        MOA = 9.75;
    }
    if(finalRange > 575 && finalRange <= 600) {
        MOA = 10.5;
    }
    if(finalRange > 600 && finalRange <= 625) {
        MOA = 11.5;
    }
    if(finalRange > 625 && finalRange <= 650) {
        MOA = 12.25;
    }
    if(finalRange > 650 && finalRange <= 675) {
        MOA = 13;
    }
    if(finalRange > 675 && finalRange <= 700) {
        MOA = 14;
    }
    if(finalRange > 700) {
       noMOA = true;
    }


    // Create an anonymous implementation of OnClickListener
    View.OnClickListener btnClickCalc = new View.OnClickListener() {


        public void onClick(View v) {
            double clicks = (MOA * 4);
            String toText = Double.toString(clicks);
            turretClicks.setText(toText);



        }
    };

        // Capture our button from layout
        Button button = (Button)findViewById(R.id.btnClickCalc);
        // Register the onClick listener with the implementation above
        button.setOnClickListener(btnClickCalc);

    }
}
在setContentView之后将Textview定义移动到onCreate中

像这样,

turretClicks = (TextView)findViewById(R.id.turretClicks);
只有在设置ContentView之后,活动才知道要解析哪个布局文件树以查找指定的视图

接下来,将stringRange转换为onClick事件中的整数,并将所有代码移到onClick事件中转换之后,以避免NumberFormatException


而且,add@Override注释在onClick方法之前。

将代码更改为如下所示

TextView turretClicks; // changed here
boolean noMOA;

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

    turretClicks = (TextView)findViewById(R.id.turretClicks); // added the line here

    ---- and so on --

必须在setContentViewR.layout.activity\u main之后定义视图

将其复制到您的项目中:

public class MainActivity extends AppCompatActivity {
double MOA;
TextView turretClicks;
boolean noMOA;

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

turretClicks = (TextView)findViewById(R.id.turretClicks);

EditText range = (EditText) findViewById(R.id.rangeEntry);
String stringRange = range.getText().toString();
int finalRange = Integer.parseInt(stringRange);
if(finalRange <= 200) {
    MOA = 0;
}
if(finalRange > 200 && finalRange <= 225){
    MOA = .5;
}
if(finalRange > 225 && finalRange <= 250) {
    MOA = 1;
}
if(finalRange > 250 && finalRange <= 275) {
    MOA = 1.65;
}
if(finalRange > 275 && finalRange <= 300) {
    MOA = 2.25;
}
if(finalRange > 300 && finalRange <= 325) {
    MOA = 2.8;
}
if(finalRange > 325 && finalRange <= 350) {
    MOA = 3.5;
}
if(finalRange > 350 && finalRange <= 375) {
    MOA = 4.0;
}
if(finalRange > 375 && finalRange <= 400) {
    MOA = 4.75;
}
if(finalRange > 400 && finalRange <= 425) {
    MOA = 5.50;
}
if(finalRange > 425 && finalRange <= 450) {
    MOA = 6.25;
}
if(finalRange > 450 && finalRange <= 475) {
    MOA = 7.0;
}
if(finalRange > 475 && finalRange <= 500) {
    MOA = 7.5;
}
if(finalRange > 500 && finalRange <= 525) {
    MOA = 8.25;
}
if(finalRange > 525 && finalRange <= 550) {
    MOA = 9.0;
}
if(finalRange > 550 && finalRange <= 575) {
    MOA = 9.75;
}
if(finalRange > 575 && finalRange <= 600) {
    MOA = 10.5;
}
if(finalRange > 600 && finalRange <= 625) {
    MOA = 11.5;
}
if(finalRange > 625 && finalRange <= 650) {
    MOA = 12.25;
}
if(finalRange > 650 && finalRange <= 675) {
    MOA = 13;
}
if(finalRange > 675 && finalRange <= 700) {
    MOA = 14;
}
if(finalRange > 700) {
   noMOA = true;
}


// Create an anonymous implementation of OnClickListener
View.OnClickListener btnClickCalc = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        double clicks = (MOA * 4);
        String toText = Double.toString(clicks);
        turretClicks.setText(toText);



    }
};

    // Capture our button from layout
    Button button = (Button)findViewById(R.id.btnClickCalc);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(btnClickCalc);

}
}

另外,onCreate方法告诉我太复杂,无法分析数据流算法。我应该把所有的if语句都拉出来,放在onClick中还是什么的?你的两个解决方案都清除了错误。但是现在我得到了无效的int:10-31 22:11:04.754 10019-10019/lol2dubs.stevemoa E/AndroidRuntime:java.lang.RuntimeException:无法启动活动组件信息{lol2dubs.stevemoa/lol2dubs.stevemoa.MainActivity}:java.lang.NumberFormatException:无效的int:你能用当前日志更新你的问题吗?上面没有显示哪一行。有一个关于数字格式异常的线程,我现在得到了它。这是因为所有的if语句都不在onClick中。他们在一起。因此,无效的int是因为创建活动时范围字段中没有条目。Nice。如果答案有帮助,就接受它。谢谢:希望我能记下两个答案。你的回答是正确的,但是尤瓦·拉吉回答了我的第二个问题,所以我给他答案。你可以把任何问题标记为已接受。很乐意帮忙。虽然我不知道Yuva是如何回答您的第二个问题的,因为您自己回答了这个问题,但他没有建议将您的代码放在onClick中。
turretClicks = (TextView)findViewById(R.id.turretClicks);
TextView turretClicks; // changed here
boolean noMOA;

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

    turretClicks = (TextView)findViewById(R.id.turretClicks); // added the line here

    ---- and so on --
public class MainActivity extends AppCompatActivity {
double MOA;
TextView turretClicks;
boolean noMOA;

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

turretClicks = (TextView)findViewById(R.id.turretClicks);

EditText range = (EditText) findViewById(R.id.rangeEntry);
String stringRange = range.getText().toString();
int finalRange = Integer.parseInt(stringRange);
if(finalRange <= 200) {
    MOA = 0;
}
if(finalRange > 200 && finalRange <= 225){
    MOA = .5;
}
if(finalRange > 225 && finalRange <= 250) {
    MOA = 1;
}
if(finalRange > 250 && finalRange <= 275) {
    MOA = 1.65;
}
if(finalRange > 275 && finalRange <= 300) {
    MOA = 2.25;
}
if(finalRange > 300 && finalRange <= 325) {
    MOA = 2.8;
}
if(finalRange > 325 && finalRange <= 350) {
    MOA = 3.5;
}
if(finalRange > 350 && finalRange <= 375) {
    MOA = 4.0;
}
if(finalRange > 375 && finalRange <= 400) {
    MOA = 4.75;
}
if(finalRange > 400 && finalRange <= 425) {
    MOA = 5.50;
}
if(finalRange > 425 && finalRange <= 450) {
    MOA = 6.25;
}
if(finalRange > 450 && finalRange <= 475) {
    MOA = 7.0;
}
if(finalRange > 475 && finalRange <= 500) {
    MOA = 7.5;
}
if(finalRange > 500 && finalRange <= 525) {
    MOA = 8.25;
}
if(finalRange > 525 && finalRange <= 550) {
    MOA = 9.0;
}
if(finalRange > 550 && finalRange <= 575) {
    MOA = 9.75;
}
if(finalRange > 575 && finalRange <= 600) {
    MOA = 10.5;
}
if(finalRange > 600 && finalRange <= 625) {
    MOA = 11.5;
}
if(finalRange > 625 && finalRange <= 650) {
    MOA = 12.25;
}
if(finalRange > 650 && finalRange <= 675) {
    MOA = 13;
}
if(finalRange > 675 && finalRange <= 700) {
    MOA = 14;
}
if(finalRange > 700) {
   noMOA = true;
}


// Create an anonymous implementation of OnClickListener
View.OnClickListener btnClickCalc = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        double clicks = (MOA * 4);
        String toText = Double.toString(clicks);
        turretClicks.setText(toText);



    }
};

    // Capture our button from layout
    Button button = (Button)findViewById(R.id.btnClickCalc);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(btnClickCalc);

}
}