【问题标题】:Program Crashes when calculate button is clicked单击计算按钮时程序崩溃
【发布时间】:2012-10-29 19:13:10
【问题描述】:

我有一个应用程序在单击计算按钮时崩溃。在该程序中,用户从下拉菜单列表中输入食物信息,然后输入他们的信息以及订单。然后使用文本计算订单总数,并在第二个活动 (Food_Total) 中显示 toast 消息及其订单信息。

        >>Here are print screens of the code:

        public class MainActivity extends Activity {

        public static String priceString= "";

            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }

          @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                getMenuInflater().inflate(R.menu.activity_main, menu);
                return true;
            }

            public void onClick(View view) {
                    Intent intent = new Intent(this, Food_Total.class);
                    Bundle b = new Bundle();
                    DecimalFormat df = new DecimalFormat("0.00");//decimal format for dollars
                    EditText mealNameBox= (EditText) findViewById(R.id.editText1);
                    String mealNameString= mealNameBox.getText().toString();
                    EditText mealPriceBox = (EditText) findViewById(R.id.editText2);
                    String priceString = mealPriceBox.getText().toString();
                    Double priceDouble= Double.parseDouble(priceString);

                    //Sales tax for VA
                    String tax= "4%";

                    String percentString= tax.toString();
                    //Calculate taxes for food
                    double taxfood= priceDouble * .04;

                    String taxfood_string= Double.toString(taxfood);


                    //Calculate food total
                    double food_total= taxfood + priceDouble;

                    String food_total_string= Double.toString(food_total);

                    b.putString("Meal Price:", "" + df.format(priceString));
                    b.putString("Tax: ", tax);
                    b.putString("Food Total: ", "" + df.format(food_total));

                    intent.putExtras(b);
                    startActivity(intent);

                    //Toast.makeText(this, "" + tip, Toast.LENGTH_LONG).show();
                    //Toast.makeText(this, "" + total, Toast.LENGTH_LONG).show();
                }
        }


    Food_Total Activity (displays toast message):

        public class Food_Total extends Activity {

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_food__total);
                //get info from intent
                Bundle b = getIntent().getExtras();

                // #####################################################
                //Updated key values on bundle so that they
                // match the MainActivity class
                // #####################################################
                String meal_nameString= b.getString("MealName");
                String mealString = b.getString("MealPrice");
                String percentString = b.getString("TaxRate");
                String tax_foodString= b.getString("TaxAmount");
                String food_totalString= b.getString("Total");

                //results output info
                String results = meal_nameString + getString(R.string.mealNameString) +
                "\n" + mealString + getString(R.string.mealPrice)+ ": $"+ 
                "\n" + percentString + "%" +  
                "\n" + tax_foodString + getString(R.string.taxfood_string) + ": $"  +
                "\n" + food_totalString + getString(R.string.food_total_string);

                //create text view
                TextView textView = new TextView(this);
                textView.setTextSize(30);
                textView.setText(results);

                //set view as the activity layout
                setContentView(textView);
            }

            @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                getMenuInflater().inflate(R.menu.activity_food__total, menu);
                return true;
            }

            @Override
            public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                    case android.R.id.home:
                        NavUtils.navigateUpFromSameTask(this);
                        return true;
                }
                return super.onOptionsItemSelected(item);
            }
        }

        Layout XML:

        <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" >

            <EditText
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginTop="15dp"
                android:ems="10" >

                <requestFocus />
            </EditText>

            <TextView
                android:id="@+id/name_lbl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/name"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="18dp"
                android:text="Student Name: "
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                android:id="@+id/Food_Name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/name_lbl"
                android:layout_below="@+id/name_lbl"
                android:layout_marginTop="34dp"
                android:text="Food Name:"
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/Food_Name"
                android:layout_alignParentRight="true"
                android:ems="10" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/Food_Name"
                android:layout_below="@+id/Food_Name"
                android:layout_marginTop="26dp"
                android:text="Food Price: "
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/textView1"
                android:layout_alignBottom="@+id/textView1"
                android:layout_alignParentRight="true"
                android:ems="10"
                android:inputType="numberDecimal" />

            <ListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView1"
                android:layout_alignRight="@+id/name_lbl"
                android:layout_below="@+id/editText2"
                android:layout_marginTop="44dp" >

            </ListView>

            <Button
                android:id="@+id/calculate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignTop="@+id/listView1"
                android:layout_marginRight="50dp"
                android:onClick="onClick"
                android:text="Calculate" />

        </RelativeLayout>

    >>Android Manifest File:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.food_activity_final"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="15" />

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

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".Food_Total"
                android:label="@string/title_activity_food__total" >

                     <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.example.myfirstapp.MainActivity" />

                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />

            </activity>
        </application>

    </manifest>

    >>Thank you for your help! Let me know if you need to know anything more about the program.

【问题讨论】:

  • 检查日志是什么导致了崩溃。如果您无法破译,请在此处粘贴。
  • 这不是你的问题,但你在一个可能没有必要的字符串上调用 toString(),除非我错过了什么
  • 我在控制台中得到的唯一错误是:[2012-10-29 17:04:12 - com.example.food_activity_final.MainActivity] ActivityManager: Warning: Activity not started, its current task被带到了前台
  • 进入设备设置并手动强制关闭应用程序,然后重试。听起来程序正在完全关闭
  • 我不明白你的意思。我可以使用虚拟机顶部的 X 按钮关闭应用程序。

标签: android button crash crash-reports


【解决方案1】:

AndroidManifest.xml 中如何定义这些活动? MainActivity 应该有一个意图过滤器,如下所示: 另一个 Activity 也必须在其中,但它应该有意图过滤器。

【讨论】:

  • 我去掉了食物总量的意图过滤器,它仍然没有做任何事情。
  • 我会上传 Android Manifest 文件。
猜你喜欢
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多