java - 按下按钮时Android应用程序崩溃

时间:2015-03-10 23:34:56

标签: java android xml

我正在尝试使用简单的Android应用程序。我很困惑为什么我收到错误"不幸的是,这个应用程序已停止工作"。

基本上,当我点击一个按钮时,我需要增加总值。例如,咖啡总数增加2。每次单击添加总值的按钮时,应用程序都会崩溃。

这是源代码。我刚刚复制了特定于此问题的部分。

package com.example.pp.application;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity implements AdapterView.OnItemSelectedListener {

    TextView tv01;
    Double Total = 0.00;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv01 = (TextView) findViewById(R.id.tv01);

    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void sendMessage(View view)
    {
        Intent intent = new Intent(MainActivity.this, MainActivity2.class);
        startActivity(intent);
    }



    public void addCoffee() {

        Total = Total + 2.20;
        tv01.setText(""+Total+"");
    }

    public void addBus() {

        Total = Total + 1.90;
        tv01.setText(""+Total+"");
    }

    public void addMilk() {

        Total = Total + 1.50;
        tv01.setText(""+Total+"");

    }


}

这是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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/label">

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Coffee"
    android:id="@+id/button"
    android:onClick="addCoffee"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="42dp" />

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Bus"
    android:onClick="addBus"
    android:id="@+id/button3"
    android:layout_below="@+id/button2"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<Button
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="Milk"
    android:onClick="addMilk"
    android:id="@+id/button4"
    android:layout_below="@+id/button3"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next"
    android:onClick="sendMessage"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:id="@+id/button5" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="------------------"
    android:id="@+id/tv01"
    android:layout_alignRight="@+id/button"
    android:layout_alignEnd="@+id/button" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Total"
    android:id="@+id/textView"
    android:layout_toStartOf="@+id/tv01"
    android:layout_toLeftOf="@+id/tv01" />

3 个答案:

答案 0 :(得分:2)

而不是public void addCoffee()您的onClick方法定义应该看起来像public void addCoffee(View v),其中v是您点击的小部件(在本例中为Button)。更新其他onClick方法时采用相同的方法。此要求仅适用于通过XML布局中的android:onClick属性定义的回调。

答案 1 :(得分:0)

由于您还没有发布LogCat的堆栈跟踪,因此无法告知代码中的错误信息。

但它之前很可能已经发生过。这些链接包含有关例外的类似立场和文件。

My Android App Keeps Crashing

https://developers.google.com/analytics/devguides/collection/android/v4/exceptions

https://developer.android.com/distribute/essentials/optimizing-your-app.html

Android App Crashes on Button Click

答案 2 :(得分:0)

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tv01 = (TextView) findViewById(R.id.tv01);
    public void addCoffee(View v) {

    Total = Total + 2.20;
    tv01.setText(""+Total+"");
   }
   }

并以相同方式继续使用其他功能