【问题标题】:Error with ArrayAdapterArrayAdapter 出错
【发布时间】:2014-09-09 05:40:41
【问题描述】:

下面是我的代码,只是试图在列表视图上显示项目,但它给了我空指针异常。有任何想法吗?我只是在最终数组中组合了 2 个字符串,并且日志 cat 指向最后带有 arrayAdapter 的行。

package com.example.forecastspending;

import java.text.DecimalFormat;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.TabHost.TabSpec;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;  
import android.widget.TabHost;
import android.app.Activity;
import android.widget.TextView;
import android.app.ListActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;

public class SavingsForecastActivity extends MainActivity {

ListView recurrenceListView;
Button add_btn;
EditText reccurenceEntry_et;
EditText reccurenceExplanation_et;

// Double[] comparisonArray = new Double[8];
int reccurenceCounter;

String[] reccurenceArray = new String[30];
String[] reccurenceExpArray = new String[30];
String[] finalDisplayArray = new String[30];

private ArrayAdapter arrayAdapter;

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

        ListView recurrenceListView = (ListView) findViewById( R.id.recurrenceListView );
        reccurenceEntry_et = (EditText) findViewById( R.id.reccurenceEntry_et );
        reccurenceExplanation_et = (EditText) findViewById( R.id.reccurenceExplanation_et );

        Button add_btn = (Button) findViewById( R.id.add_btn);

        add_btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                addRecurrence();
                //calculateMovingAverage();                 
            }
        });

}

    public void addRecurrence(){

        SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0         - for private mode
         Editor editor = pref.edit();

         // brings it in from activity 2
         // Double bankBalanceMainAct = Double.parseDouble(pref.getString("bankBalance","0"));

         int reccurenceCounter = pref.getInt("rCount",0);

        double reccurenceInput = Double.valueOf(reccurenceEntry_et.getText().toString());
        String rExpInput = reccurenceExplanation_et.getText().toString();

        editor.putString("rInput",reccurenceInput+"");
        editor.commit();
        String rInput = pref.getString("rInput","0");

        //adds the new cost to the reccurence array to dispaly for user
        reccurenceArray[reccurenceCounter] = rInput;
        //reccurenceExpArray[reccurenceCounter] = rExpInput;
        finalDisplayArray[reccurenceCounter] = rInput + "" +rExpInput;

        reccurenceCounter = reccurenceCounter + 1;
        editor.putInt("rCount",reccurenceCounter);
        editor.commit();

        for(int i = 0; i < finalDisplayArray.length; i++){
                finalDisplayArray[i] = "0";             
        }

        arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,   finalDisplayArray);
        recurrenceListView.setAdapter(arrayAdapter);

    }

}

【问题讨论】:

  • 发布您的 logcat 错误
  • 将recurrenceListView声明为全局意味着onCreate()之外
  • 尝试在 onCreate() 中的recurrenceListView 之前删除ListView 关键字。

标签: android arrays eclipse android-arrayadapter


【解决方案1】:

使用

recurrenceListView = (ListView) findViewById( R.id.recurrenceListView );

而不是

ListView recurrenceListView = (ListView) findViewById( R.id.recurrenceListView );

因为在onCreate 中,您是ListView 的新实例,而不是在onCreate 之前初始化您正在创建的recurrenceListView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多