0

所以我一直在这里寻找我的应用程序崩溃的解决方案/原因。此外,我的 logcat 将无法工作。当它确实工作时,它报告主要活动有问题,但我提供了所有代码。如果有人可以帮助我,将不胜感激。

主要活动:

     import android.os.Bundle;
     import android.app.Activity;
     import android.view.Menu;
     import android.view.View;
     import android.widget.*;
     import android.widget.AdapterView.OnItemClickListener;


 public class MainActivity extends Activity { 
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final GridView gridview = (GridView) findViewById(R.id.gridView1);
        Table t=new Table((Double) null, null);
        gridview.setAdapter(new ImageAdapter(this, t));

        gridview.setOnItemClickListener(new OnItemClickListener() 
        {
             @Override
             public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
             {
                 Toast.makeText(gridview.getContext(), "" + position, Toast.LENGTH_SHORT).show();
             }

        });
   }


}

图像适配器:

package com.example.myspending;

import java.util.ArrayList;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.TextView;

public class ImageAdapter extends BaseAdapter 
{
    private Context mContext;
    private ArrayList<String> texts;
    public ImageAdapter(Context context, Table t) 
    {
        mContext=context;
        for(int i=0; i<t.size(); i++)
        {
        texts.add((t.table.get(i).name)+" $"+(t.table.get(i).money));
        }
    }
    @Override
    public int getCount() 
    {
        return texts.size();
    }
    @Override
    public Object getItem(int position) 
    {
         return null;
    }
    @Override
    public long getItemId(int position) {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView tv;
        if(convertView==null){
            tv=new TextView(mContext);
            tv.setLayoutParams(new GridView.LayoutParams(85,85));
        }
        else{
            tv=(TextView)convertView;
        }
        tv.setText(texts.get(position));
        tv.setTextSize(30);
        return tv;
    }

}

桌子:

package com.example.myspending;

import java.util.*;

public class Table
{
        public ArrayList<spending> table= new ArrayList<spending>();
    double price;
    String name;
    double total;
    public Table(double p, String n)
    {
        price=p;
        name=n;
        total+=price;
        table.add(new spending(total, "Total"));
        table.add(new spending(price, name));
    }
    public void insert(double p, String n)
    {
        total+=p;
        table.add(new spending(p, n));
    }
    public void delete(String n)
    {
       for(int i=0; i<table.size(); i++)
       {
            if(table.get(i).name==n)
            {
                total-=table.get(i).money;
                table.remove(i);
            }
       }
    }
    public void reset()
    {
        for(int i=0; i<table.size(); i++)
        {
                table.remove(i);
        }
    }
    public int size()
    {
        return table.size();
    }
}
class spending
{
    public double money;
    public String name;
    public spending(double m, String n)
    {
        money=m;
        name=n;
           if(!(name=="deposit"||name=="Deposit"||name=="add"||name=="Add"||name=="added"||name=="Added"))
        {
            money=money*(-1);
        }
    }
 }

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.myspending"
     android:versionCode="1"
     android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.myspending.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
         </activity>
    </application>

</manifest>

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >



    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="325sp"
        android:layout_toRightOf="@+id/textView1"
        android:numColumns="3" >

    </GridView>

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/gridView1"
        android:ems="10"
        android:inputType="text" />

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/gridView1"
        android:layout_below="@+id/editText1"
        android:text="add" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_alignLeft="@+id/editText1"
        android:ems="10"
        android:inputType="numberDecimal" />

</RelativeLayout>
4

3 回答 3

0
class spending
{
    public double money;
    public String name;

    public spending(double m, String n)
    {
        money=m;
        name=n;

        if(name.equalsIgnoreCase("deposit") == false && 
           name.equalsIgnoreCase("add") == false  && 
           name.equalsIgnoreCase("added") == false)
        {
            money *= -1;
        }
    }
}
于 2013-04-12T02:57:11.220 回答
0

拿出你的(Double) null,你想在那里完成什么?另外,使用项目的上下文,而gridview不是

public class MainActivity extends Activity
{ 
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        final GridView gridview = (GridView) findViewById(R.id.gridView1);

        Table t = new Table(-1d, null);

        gridview.setAdapter(new ImageAdapter(this, t));

        gridview.setOnItemClickListener(new OnItemClickListener() 
        {
             public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
             {
                 Toast.makeText(v.getContext(), Integer.toString(position), Toast.LENGTH_SHORT).show();
             }
        });
   }
}
于 2013-04-12T03:03:43.920 回答
0

一些一般性的评论:

  1. 如此大范围地发布代码会使其他人难以分析,因此您获得真正有用​​的答案(tm)的机会减少了。
  2. 在将您的代码缩减为一个简短的、自包含的、可编译的示例(参见http://sscce.org/)的过程中,您也可以更轻松地解决问题。在这个阶段经常发生作者自己发现缺陷的情况。
  3. 如果问题是可重现的,即每次运行都会发生 - 这是一个好消息;因为你需要更少的跑步来固定它
  4. 使用调试工具;如果您没有/不知道调试器,只需输出中间结果或什至简单的消息,如“达到里程碑 1”,您就可以界定程序中出现错误的部分
  5. 从头开始编写代码(可能会在绝望中浮现在您的脑海中)长期而言并不好,因为即使您获得了工作代码,您也永远不会知道这里出了什么问题以及如何处理程序中的编程错误未来。
于 2016-05-17T14:28:37.523 回答