Java Android应用程序崩溃,并且可以';我不知道为什么
因此,我一直在这里寻找我的应用程序崩溃的解决方案/原因。此外,我的logcat无法工作。当它工作时,它报告主活动有问题,但我提供了所有代码。如果有人能在这方面帮助我,我将不胜感激 主要活动:Java Android应用程序崩溃,并且可以';我不知道为什么,java,android,xml,Java,Android,Xml,因此,我一直在这里寻找我的应用程序崩溃的解决方案/原因。此外,我的logcat无法工作。当它工作时,它报告主活动有问题,但我提供了所有代码。如果有人能在这方面帮助我,我将不胜感激 主要活动: import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.
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();
}
});
}
}
导入android.os.Bundle;
导入android.app.Activity;
导入android.view.Menu;
导入android.view.view;
导入android.widget.*;
导入android.widget.AdapterView.OnItemClickListener;
公共类MainActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridView GridView=(GridView)findViewById(R.id.gridView1);
表t=新表((双)空,空);
setAdapter(新的ImageAdapter(this,t));
setOnItemClickListener(新的OnItemClickListener()
{
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id)
{
Toast.makeText(gridview.getContext(),“”+位置,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;
导入java.util.ArrayList;
导入android.content.Context;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.GridView;
导入android.widget.TextView;
公共类ImageAdapter扩展了BaseAdapter
{
私有上下文;
私人ArrayList文本;
公共ImageAdapter(上下文,表t)
{
mContext=上下文;
对于(int i=0;i去掉你的(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();
}
});
}
}
公共类MainActivity扩展活动
{
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GridView GridView=(GridView)findViewById(R.id.gridView1);
表t=新表(-1d,空);
setAdapter(新的ImageAdapter(this,t));
setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView父视图、视图v、整型位置、长id)
{
Toast.makeText(v.getContext(),Integer.toString(position),Toast.LENGTH_SHORT.show();
}
});
}
}
一些一般性意见:
在如此大的范围内发布代码使得为其他人分析代码变得困难,因此
你得到真正有用答案(tm)的机会越来越少
在将代码简化为一个简短、自包含、可编译的示例(请参阅)的过程中,您还将使其成为
你更容易避开这个问题。它经常发生在
这个阶段是作者自己发现缺陷的阶段
如果问题是可再现的,即每次运行时都会出现问题-这是一个好消息;因为您需要更少的运行来确定问题
使用调试工具;如果您没有/不知道调试器,只需输出中间结果,甚至简单的消息,如
“已达到里程碑1”将使您能够界定
出现错误的程序
从零开始编写代码(可能会在绝望中浮现在你的脑海中)是不好的长期做法,因为即使你得到了一个可以工作的代码,你也永远不会知道这里出了什么问题以及将来如何处理编程错误
LogCat中有任何错误吗?嘿,如果您正在使用Eclipse,能否重新启动Eclipse并查看LogCat是否再次工作?如果您在那里发布错误,我们可能会提供帮助。此外,如果您无法在Eclipse中获取日志,请打开您的DDM,该DDM位于您的AndroidSDK目录中,在将具有LogCat的工具下,您可以发布日志您在那里看到的错误。清除logcat上的筛选器--这可能会阻止它显示相关条目。另一方面,您需要修复花费的类。现在您有一个if
语句,带有一组相等的条件。您应该使用equals()
或equalsIgnoreCase()
methods.Q于2013年发布,并且有一个公认的答案……OP不太可能“随着您的进步发布更具体的问题”!我想您可以将此编辑为对其他有相同问题的人的一般建议。是的,这就像我的第一个问题。相信我,我已经变得更好了。为什么要回答这个问题?
<?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>
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;
}
}
}
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();
}
});
}
}