2013-04-12 65 views
0

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

mainActivity:

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

     }); 
    } 


} 

ImageAdapter:

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> 
+0

LogCat中的任何错误? – Raptor

+3

嘿,如果你正在使用Eclipse,你能重新启动Eclipse并查看LogCat是否能够再次工作吗?如果您从那里发布错误,我们可能会提供帮助。 – Gix

+1

此外,如果您无法在Eclipse中获取日志,请打开您的DDMS,在您的AndroidSDK目录中找到并在具有LogCat的'tools'下找到,然后您可以发布您在该处看到的错误。 – Gix

回答

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

一些一般性发言:

  1. 邮政代码在这样一个大的程度上使得它很难分析别人,所以 你的机会获得真正有用​​的答案(tm)会减少。
  2. 在将您的代码缩减为一个简短的,自包含的,可编译的示例(请参阅http://sscce.org/)的过程中,您将使其更容易避免出现问题。它经常发生在 这个阶段,作者发现了这个缺陷。
  3. 如果问题是可重现的,即它在每次运行中都会发生 - 这是一个好消息;因为您需要更少的运行将其压低
  4. 使用调试工具;如果您不知道调试器,只需输出中间结果或简单的消息,例如 '达到的里程碑1'将使您能够划分 程序中出现错误的部分
  5. 从头开始编写代码(绝望中可能出现的内容)并不是长期的,因为即使你得到一个有效的代码,你也不会知道这里出了什么问题,以及将来如何处理编程错误。
+0

问题发布于2013年,并有一个被接受的答案......极不可能OP将“随着你的进步发布更具体的问题”!我想,你可以编辑这个作为一般建议给其他人使用同样的问题。 – Mogsdad

+0

@Mogsdad:谢谢你指出我的巫术:-)。编辑。 –

+0

是的,这就像我的第一个问题。相信我,我已经变得更好了。为什么回答这个? –