简体   繁体   English

ActionBar中的后退按钮NullPointerException

[英]Back-Button in ActionBar NullPointerException

I got an NullPointerException when i click at the back-button in the Actionbar at these lines: 当我在以下几行的操作栏中单击后退按钮时,出现NullPointerException:

public class CustomAdapterTasks extends BaseAdapter {

    Base64EncodeDecode base64EncodeDecode = new Base64EncodeDecode();

    private ArrayList<HashMap<String, String>> taskItems;
    private static LayoutInflater inflater = null;
    private Bitmap bm;
    public CustomAdapterTasks(Context context, ArrayList<HashMap<String, String>> items) {
        super();
        Context contex1t = context;
        this.taskItems = items;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        if (taskItems.size() != 0)
            return taskItems.size();
        return 0;
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder {
        public TextView taskTitleTextView;
        public TextView taskObjectTextView;
        public TextView taskLocationTextView;
        public ImageView taskImageImageView;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View vi = convertView;
        ViewHolder holder;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.list_item_tasks, null);

            holder = new ViewHolder();
            holder.taskTitleTextView = (TextView) vi.findViewById(R.id.taskTitle);
            holder.taskObjectTextView = (TextView) vi.findViewById(R.id.taskObject);
            holder.taskLocationTextView = (TextView) vi.findViewById(R.id.taskLocation);
            holder.taskImageImageView = (ImageView) vi.findViewById(R.id.taskImage);

            vi.setTag(holder);
        } else {
            holder = (ViewHolder) vi.getTag();
        }

        if (taskItems.size() <= 0) {
            holder.taskTitleTextView.setText("Kein Titel");
            holder.taskObjectTextView.setText("Kein Objekt");
            holder.taskLocationTextView.setText("Kein Standort");

        } else {
            bm = Bitmap.createBitmap(base64EncodeDecode.decodeBase64(taskItems.get(position).get("image")));
            holder.taskTitleTextView.setText(taskItems.get(position).get("title"));
            holder.taskObjectTextView.setText(taskItems.get(position).get("object"));
            holder.taskLocationTextView.setText(taskItems.get(position).get("location"));
            holder.taskImageImageView.setImageBitmap(bm);
        }
        return vi;
    }
}

Also in my ListTasksActivity (second Activity, not main): 同样在我的ListTasksActivity中(第二个Activity,不是main):

public class ListTasksActivity extends ListActivity implements AdapterView.OnItemClickListener {
ArrayList<HashMap<String, String>> adapterItems;

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

    Intent i = getIntent();

    ListView lv = getListView();
    lv.setOnItemClickListener(this);

    ArrayList<HashMap<String, String>> taskItems = (ArrayList<HashMap<String, String>>) i.getSerializableExtra("taskItems");
    String[] stringArr = i.getStringArrayExtra("adapterStringArray");
    int[] intArr = i.getIntArrayExtra("adapterIntArray");

    CustomAdapterTasks adapterTasks = new CustomAdapterTasks(this,taskItems);
    setListAdapter(adapterTasks);
    adapterItems = taskItems;
    //CustomAdapterTasks customAdapterTasks = new CustomAdapterTasks((ListViewActivity) ListViewActivity.getAppContext(),);
}

at: setListAdapter(adapterTasks); 在: setListAdapter(adapterTasks);

Here my implementation of the Back-Button: 这是我对后退按钮的实现:

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


        getActionBar().setDisplayHomeAsUpEnabled(true);

public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.ueber) {
            startActivity(new Intent(this, menu_main_Activity.class));
            return true;
        }
        switch (item.getItemId()) {
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
                finish();
                return true;

            default:
                return super.onOptionsItemSelected(item);
        }
    }

Exception: 例外:

Caused by: java.lang.NullPointerException
        at CustomAdapter.CustomAdapterTasks.getCount(CustomAdapterTasks.java:34)
        at android.widget.ListView.setAdapter(ListView.java:480)
        at android.app.ListActivity.setListAdapter(ListActivity.java:265)
        at de.example.app.ListTasksActivity.onCreate(ListTasksActivity.java:35)

Tell me if you want some more code! 告诉我是否需要更多代码!

your implementation of getCount is wrong. 您对getCount的实现是错误的。 It should be 它应该是

public int getCount() {
    if (taskItems != null)
        return taskItems.size();
    return 0;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM