【问题标题】:Array List Calculator数组列表计算器
【发布时间】:2021-10-14 08:39:09
【问题描述】:

我的计划是创建一个应用程序,其中包含 1 个用户输入任意数字的 editText 和 ArrayList 的 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);
            }
        });

【问题讨论】:

  • 错误日志是什么?
  • 无法实例化活动 ComponentInfo{com.example.timetable/com.example.timetable.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'android.content.pm.ApplicationInfo android.空对象引用上的 content.Context.getApplicationInfo()'

标签: android listview arraylist


【解决方案1】:

尝试在setContent 之后将这些行移到您的 onCreate 方法中

 EditText numberEntered = findViewById(R.id.enterNum);

 int enteredNum = Integer.parseInt(String.valueOf(numberEntered));

并将Integer.parseInt 放入try/catch block 中,否则当EditText 为空时会抛出异常。

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);
            }
        });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2017-03-08
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多