Android:从列表视图中点击的项目计算价格。应用程序在总活动logcat中崩溃:无效的浮动:“” [英] Android: calculate price from clicked items in listview. App crashes in total activity logcat:invalid float: “”

查看:49
本文介绍了Android:从列表视图中点击的项目计算价格。应用程序在总活动logcat中崩溃:无效的浮动:“”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 -8 
down vote
最爱
这是一个菜鸟,所以请耐心等待。我有食品和饮料的列表视图,然后是价格,然后是一个继续按钮,它将显示订单摘要和其他活动的总金额。单击某些项目后单击继续按钮,应用程序崩溃不幸的是appname已停止。但是,当我单击继续按钮而不单击任何项​​目时,它会显示订单摘要的布局。因此,在传递数据时会发生错误。在logcat中我注意到第一个Invalid float:我不知道如何解决这个问题。





我尝试过:



 package edu.sti.snapchit; 

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.StringTokenizer;
import java.lang.String;


公共类TotalsActivity扩展AppCompatActivity {

MyApp mApp;
EditText et_summary;
TextView tv_total;
Button btn_code;

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.totals);
btn_code =(Button)findViewById(R.id.btn_code);
mApp =((MyApp)getApplicationContext());
et_summary =(EditText)findViewById(R.id.et_summary);
tv_total =(TextView)findViewById(R.id.tv_total);
et_summary.setText(mApp.getGlobalVarValue());
String str = mApp.getGlobalVarValue();
StringTokenizer st = new StringTokenizer(str,Php);
String test =;
浮动总数= 0;
int count = 0;

while(st.hasMoreElements())
{
test = st.nextElement()。toString()。substring(0,1);
if(count> 0)
total + = Float.parseFloat(test);
count ++;
}

tv_total.setText(总计:+总计+);
mApp.setGlobalClear();
btn_code.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){

Intent intent = new Intent(TotalsActivity.this ,GeneratorActivity.class);
startActivity(intent);
}
});

}


public boolean isFloat(String input)
{

try
{
Float.parseFloat(输入);
返回true;
}
catch(例外e)
{
返回false;
}
}

}







包含列表视图的食物活动代码



包edu.sti.snapchit;



导入android。 content.Context;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase ;

导入android.os.Bundle;

导入android.support.v7.app.AlertDialog;

导入android.support.v7。 app.AppCompatActivity;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

导入android.widget.Button;

导入android.widget.ListView;

导入android.widget.Toast;



import java.util.HashMap;





公共类NewFoodsActivity扩展AppCompatActivity {



MyApp mApp;

私有HashMap<字符串,位置& GT;位置;

ListView listView1;

SQLiteDatabase数据库;







@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

db = openOrCreateDatabase (Foods_DB,Context.MODE_PRIVATE,null);

setContentView(R.layout.new_foods);

locations = loadLocationData();

addListenerButton();

initializeUI();

}

public void initializeUI()

{

String [] foodies = getFoodNames();

ArrayAdapter< string> adapter = new ArrayAdapter< string>

(这个,android.R.layout.simple_list_item_1,美食家);

listView1.setAdapter(适配器);

}

private String [] getFoodNames()

{

String [] foodies = new String [locations.size()];

美食家= locations.keySet()。toArray(美食家);

返回美食家;

}

私人void displaySelectedFoodInfo(String foodName)

{



}

public void showMessage(String title,String message)

{

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setCancelable(true);

builder.setTitle(title);

builder.setMessage(message);

builder.show();

}

private HashMap< String,Location> loadLocationData()

{

HashMap< String,Location> locations = new HashMap< String,Location>() ;

光标c = db.rawQuery(SELECT * FROM table_foods order by food_id

asc,null);

StringBuffer buffer = new StringBuffer() ;

while(c.moveToNext())

{

locations.put( - + c.getString(1).toString ()+[Php

+ c.getString(2).toString()+],新位置(Integer.parseInt(c.getString(0)),c.getString( 1).toString(),Double.parseDouble(c.getString(2))));



}

返回位置;

}

public void addListenerButton()

{

final Context context = this;

Button btnAdd =(Button)findViewById(R.id.btn_add);

Button btnProceed =(Button)findViewById(R.id.btnProceed);

Button btn_drinks =(按钮)findViewById(R.id.btn_drinks);

按钮btn_foods =(按钮)findViewById(R.id.btn_foods);

listView1 =(ListView)findViewById (R.id.listView1);

listView1.setOnI temClickListener(

new AdapterView.OnItemClickListener(){

@Override

public void onItemClick(AdapterView<?> Arg0,View view,int

position,long id){

Object o = listView1.getItemAtPosition(position);

String pen = o .toString();



mApp =((MyApp)getApplicationContext());

mApp.setGlobalVarValue(pen);

Toast.makeText(getApplicationContext(),Item Added+

+ pen,Toast.LENGTH_LONG).show();





}

}

);

btnAdd.setOnClickListener(new View.OnClickListener (){b / b
@Override

public void onClick(查看视图){

意图intent = new Intent(context,NewAddFoods.class);



startActivity(意图);

}

});

btnProceed .setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(查看视图){

意图intent = new Intent(context,TotalsActivity.class);



startActivity(intent);

}

});

btn_foods.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(查看视图){

意图intent = new Intent(context,NewFoodsActivity.class);



startActivity(intent);

}

});

btn_drinks.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(查看视图){

Intent intent = new Intent(context,NewDrinksActivity.class);



startActivity(意图);

}

});

}

}



这是LOGCAT中的彩色红色文字



02-20 04:37:23.624 1447-1447 / edu.sti.snapchit E / AndroidRuntime:FATAL EXCEPTION:main java.lang.RuntimeException:无法启动活动ComponentInfo {edu.sti .snapchit / edu.sti.snapchit.TotalsActivity}:java.lang.NumberFormatException:在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)中无效的浮点数: :2261)在Android.app.Handler.dispatchMessage(Handler.java:99)的android.app.ActivityThread.access $ 600(ActivityThread.java:141)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256) )在android.app.Looper.loop(Looper.java:137)的android.app.ActivityThread.main(ActivityThread.java:5103)处于java.lang的java.lang.reflect.Method.invokeNative(Native Method)。在com.android.internal.os.ZygoteInit.main的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)中反映.Method.invoke(Method.java:525)(ZygoteInit.java: 553)在dalvik.system.Native Start.main(Native Method)引起:java.lang.NumberFormatException:java.lang.StringToReal.parseFloat(StringToReal.java:289)java.lang.StringToReal.invalidReal(StringToReal.java:63)中无效的float: )在android.app.Activity.performCreate(Activity.java:5133)的edu.sti.snapchit.TotalsActivity.onCreate(TotalsActivity.java:40)上的java.lang.Float.parseFloat(Float.java:300) .app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)



02-20 04:37 :29.372 1494-1494 / edu.sti.snapchit E / dalvikvm:找不到类'android.graphics.drawable.RippleDrawable',从方法android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering引用



02-20 04:37:30.592 1494-1494 / edu.sti.snapchit E / OpenGLRenderer:从GradienCache获取MAX_TEXTURE_SIZE 02-20 04:37:30.616 1494-1494 / edu.sti。 snapchit E / OpenGLRenderer:获取MAX_TEXTURE_SIZE来自Caches :: initConstraints()



Ps。是的,我在制作此应用时遵循了一个youtube教程。在vid中的应用程序正在完美地工作,而我的崩溃。要么我错过了一些东西,但我检查了代码10次,或者是否有部分vid被跳过。上传者几天都没有回复:(



我差点忘了可能还有另外一个原因造成这种情况。在TotalsActivity中,方法isFloat从未使用过。


H.handleMessage(ActivityThread.java:1256)的h2_lin>解决方案

600(ActivityThread.java:141)。 android.app.Looper.loop(Looper.java:137)的os.Handler.dispatchMessage(Handler.java:99)位于android.app.ActivityThread.main(ActivityThread.java:5103)的java.lang.reflect.Method .invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:525)at com.android.internal.os.ZygoteInit


MethodAndArgsCaller.run(ZygoteInit。 java:737)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)at dalvik.system.NativeStart.main(Native Method)引起:java.lang.NumberFormatException:无效的浮点数:at java.lang.StringTtringRea上的java.lang.StringToReal.invalidReal(StringToReal.java:63)位于android.app.Activity.performCreate的edu.sti.snapchit.TotalsActivity.onCreate(TotalsActivity.java:40)的java.lang.Float.parseFloat(Float.java:300)中的l.parseFloat(StringToReal.java:289) (Activity.java:5133)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)



02-20 04:37:29.372 1494-1494 / edu.sti.snapchit E / dalvikvm:找不到类'android.graphics.drawable.RippleDrawable',从方法android.support.v7.widget.AppCompatImageHelper中引用.hasOverlappingRendering



02-20 04:37:30.592 1494-1494 / edu.sti.snapchit E / OpenGLRenderer:从GradienCache获取MAX_TEXTURE_SIZE 02-20 04:37: 30.616 1494-1494 / edu.sti.snapchit E / OpenGLRenderer:从Caches :: initConstraints获取MAX_TEXTURE_SIZE()



Ps。是的,我在制作此应用时遵循了一个youtube教程。在vid中的应用程序正在完美地工作,而我的崩溃。要么我错过了一些东西,但我检查了代码10次,或者是否有部分vid被跳过。上传者几天都没有回复:(



我差点忘了可能还有另外一个原因造成这种情况。在TotalsActivity中,方法isFloat从未使用过。


-8
down vote
favorite
Im a noob in this so please bear with me. I have a listview of food and drinks with price then a proceed button which will show the order summary and total amount in other activity. After I click some items then click the proceed button, the app crash "Unfortunately appname has stopped." But when I click proceed button without clicking any items it displays the layout of the order summary. Therefore the error occurs in the passing of data. In logcat I noticed first Invalid float: "" I have no idea how to fix this.



What I have tried:

package edu.sti.snapchit;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.StringTokenizer;
import java.lang.String;


public class TotalsActivity extends AppCompatActivity{

MyApp mApp;
EditText et_summary;
TextView tv_total;
Button btn_code;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.totals);
    btn_code = (Button) findViewById(R.id.btn_code);
    mApp=((MyApp)getApplicationContext());
    et_summary = (EditText) findViewById(R.id.et_summary);
    tv_total = (TextView) findViewById(R.id.tv_total);
    et_summary.setText(mApp.getGlobalVarValue());
    String str = mApp.getGlobalVarValue();
    StringTokenizer st = new StringTokenizer(str,"Php");
    String test="";
    float total=0;
    int count =0;

    while(st.hasMoreElements())
    {
        test = st.nextElement().toString().substring(0,1);
        if(count>0)
            total += Float.parseFloat(test);
        count++;
    }

    tv_total.setText("Total:" + total+"");
    mApp.setGlobalClear();
    btn_code.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(TotalsActivity.this, GeneratorActivity.class);
            startActivity(intent);
        }
    });

}


public boolean isFloat(String input)
{

    try
    {
        Float.parseFloat(input);
        return true;
    }
    catch(Exception e)
    {
        return false;
    }
}

}




Code for Food Activity which contains the listview

package edu.sti.snapchit;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import java.util.HashMap;


public class NewFoodsActivity extends AppCompatActivity {

MyApp mApp;
private HashMap<String, Location> locations;
ListView listView1;
SQLiteDatabase db;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db=openOrCreateDatabase("Foods_DB", Context.MODE_PRIVATE, null);
setContentView(R.layout.new_foods);
locations = loadLocationData();
addListenerButton();
initializeUI();
}
public void initializeUI()
{
String[] foodies = getFoodNames();
ArrayAdapter<string> adapter = new ArrayAdapter<string>
(this,android.R.layout.simple_list_item_1, foodies);
listView1.setAdapter(adapter);
}
private String[] getFoodNames()
{
String[] foodies = new String[locations.size()];
foodies = locations.keySet().toArray(foodies);
return foodies;
}
private void displaySelectedFoodInfo(String foodName)
{

}
public void showMessage(String title,String message)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
private HashMap<String, Location>loadLocationData()
{
HashMap<String, Location>locations = new HashMap<String, Location>();
Cursor c=db.rawQuery("SELECT * FROM table_foods order by food_id
asc",null);
StringBuffer buffer = new StringBuffer();
while(c.moveToNext())
{
locations.put("- "+c.getString(1).toString()+" [Php
"+c.getString(2).toString()+"]", new Location(Integer.parseInt(c.getString(0)),c.getString(1).toString(),Double.parseDouble(c.getString(2))));

}
return locations;
}
public void addListenerButton()
{
final Context context = this;
Button btnAdd = (Button)findViewById(R.id.btn_add);
Button btnProceed = (Button)findViewById(R.id.btnProceed);
Button btn_drinks = (Button)findViewById(R.id.btn_drinks);
Button btn_foods = (Button)findViewById(R.id.btn_foods);
listView1 = (ListView) findViewById(R.id.listView1);
listView1.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> Arg0, View view, int
position, long id) {
Object o = listView1.getItemAtPosition(position);
String pen = o.toString();

mApp=((MyApp)getApplicationContext());
mApp.setGlobalVarValue(pen);
Toast.makeText(getApplicationContext(), "Item Added" +
""+ pen, Toast.LENGTH_LONG).show();


}
}
);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, NewAddFoods.class);

startActivity(intent);
}
});
btnProceed.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, TotalsActivity.class);

startActivity(intent);
}
});
btn_foods.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, NewFoodsActivity.class);

startActivity(intent);
}
});
btn_drinks.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, NewDrinksActivity.class);

startActivity(intent);
}
});
}
}

This is the colored red text in LOGCAT

02-20 04:37:23.624 1447-1447/edu.sti.snapchit E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.sti.snapchit/edu.sti.snapchit.TotalsActivity}: java.lang.NumberFormatException: Invalid float: "" at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NumberFormatException: Invalid float: "" at java.lang.StringToReal.invalidReal(StringToReal.java:63) at java.lang.StringToReal.parseFloat(StringToReal.java:289) at java.lang.Float.parseFloat(Float.java:300) at edu.sti.snapchit.TotalsActivity.onCreate(TotalsActivity.java:40) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

02-20 04:37:29.372 1494-1494/edu.sti.snapchit E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering

02-20 04:37:30.592 1494-1494/edu.sti.snapchit E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from GradienCache 02-20 04:37:30.616 1494-1494/edu.sti.snapchit E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from Caches::initConstraints()

Ps. Yes I did followed a youtube tutorial in making this app. The app in vid is working perfectly while mine crashes. Either I missed something but I checked the code like 10 times or either there are parts of the vid been skipped. The uploader havent respond for days :(

I almost forgot there might also another reason that caused this. In TotalsActivity the method isFloat is never used.

解决方案

600(ActivityThread.java:141) at android.app.ActivityThread


H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit


MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NumberFormatException: Invalid float: "" at java.lang.StringToReal.invalidReal(StringToReal.java:63) at java.lang.StringToReal.parseFloat(StringToReal.java:289) at java.lang.Float.parseFloat(Float.java:300) at edu.sti.snapchit.TotalsActivity.onCreate(TotalsActivity.java:40) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

02-20 04:37:29.372 1494-1494/edu.sti.snapchit E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering

02-20 04:37:30.592 1494-1494/edu.sti.snapchit E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from GradienCache 02-20 04:37:30.616 1494-1494/edu.sti.snapchit E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from Caches::initConstraints()

Ps. Yes I did followed a youtube tutorial in making this app. The app in vid is working perfectly while mine crashes. Either I missed something but I checked the code like 10 times or either there are parts of the vid been skipped. The uploader havent respond for days :(

I almost forgot there might also another reason that caused this. In TotalsActivity the method isFloat is never used.


这篇关于Android:从列表视图中点击的项目计算价格。应用程序在总活动logcat中崩溃:无效的浮动:“”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆