#android #listview #arraylist
Вопрос:
Мой план состоит в том, чтобы создать приложение с 1 редактируемым текстом, в котором пользователь вводит любое число, и 5-6 полей списка, где это введенное число будет умножено на 2, 3 и т. Д.
Проблема в том, что мое приложение выходит из строя после запуска, нужна помощь :/
public class MainActivity extends AppCompatActivity {
EditText numberEntered = findViewById(R.id.enterNum);
int enteredNum = Integer.parseInt(String.valueOf(numberEntered));
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView1 = findViewById(R.id.listNum);
ArrayList<Integer> intArray = new ArrayList<>();
ArrayAdapter <Integer> intAdapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, intArray);
listView1.setAdapter(intAdapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
intArray.add(2 * enteredNum);
intArray.add(3 * enteredNum);
intArray.add(4 * enteredNum);
intArray.add(5 * enteredNum);
}
});
Комментарии:
1. что такое журнал ошибок ?
2. Не удалось создать экземпляр activity ComponentInfo{com.пример.расписание/com.пример.расписание. Основная активность}: java.lang. Исключение NullPointerException: Попытка вызвать виртуальный метод ‘android.content.pm.ApplicationInfo android.content. Context.getApplicationInfo()’ для ссылки на нулевой объект
Ответ №1:
Попробуйте переместить эти строки в свой метод onCreate после setContent
EditText numberEntered = findViewById(R.id.enterNum);
int enteredNum = Integer.parseInt(String.valueOf(numberEntered));
и помещенный Integer.parseInt
в try/catch block
другое, он вызовет исключение, когда редактируемый текст пуст.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText numberEntered = findViewById(R.id.enterNum);
int enteredNum = -1;
try{
enteredNum = Integer.parseInt(String.valueOf(numberEntered));
} catch(Exception exception){
//do something with error
}
ListView listView1 = findViewById(R.id.listNum);
ArrayList<Integer> intArray = new ArrayList<>();
ArrayAdapter <Integer> intAdapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, intArray);
listView1.setAdapter(intAdapter);
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
intArray.add(2 * enteredNum);
intArray.add(3 * enteredNum);
intArray.add(4 * enteredNum);
intArray.add(5 * enteredNum);
}
});
}