2013-04-12 59 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

是的,這就像我的第一個問題。相信我,我已經變得更好了。爲什麼回答這個? –