2017-05-23 571 views
0

每当我在运行应用程序我的设备我的应用程序势力意外 点击增加按钮这是我activity_main.xml中的代码我的应用程序崩溃每当我按一下按钮

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    tools:context=".MainActivity" 
    > 
    <RelativeLayout 
     android:padding="20dp" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:orientation="vertical" 
     android:gravity="center_vertical" 
     > 
     <EditText 
      android:id="@+id/name_text_field" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Name" 
      android:inputType="textCapWords" 
      ></EditText> 
     <TextView 
      android:layout_centerVertical="true" 
      android:id="@+id/heading1" 
      style="@style/HeaderTextStyle" 
      android:text="Toppings" 
      android:layout_below="@id/name_text_field" 
      /> 
     <CheckBox 
      android:layout_below="@id/heading1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/whipped_cream" 
      android:textSize="16sp" 
      android:paddingLeft="24dp" 
      android:layout_marginTop="20dp" 
      android:text="Whipped Cream" 
      /> 
     <CheckBox 
      android:layout_marginTop="20dp" 
      android:layout_below="@id/whipped_cream" 
      android:id="@+id/chocolate" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="chocolate" 
      android:textSize="16sp" 
      android:paddingLeft="24dp" 
      /> 
     <TextView 
      android:layout_below="@id/chocolate" 
      android:id="@+id/quantity_text_view" 
      style="@style/HeaderTextStyle" 
      android:text="Quantity" 
      android:layout_marginBottom="20dp" 
      /> 
     <Button 
      android:layout_below="@id/quantity_text_view" 
      android:id="@+id/decrement_button" 
      android:layout_width="48dp" 
      android:layout_height="48dp" 
      android:onClick="decrement" 
      android:text="-" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="48dp" 
      android:paddingLeft="10dp" 
      android:layout_below="@id/quantity_text_view" 
      android:paddingRight="10dp" 
      android:textSize="15sp" 
      android:layout_toRightOf="@id/decrement_button" 
      android:id="@+id/initial_qty" 
      android:gravity="center_vertical" 
      android:text="1" 
      /> 
     <Button 
      android:layout_toRightOf="@id/initial_qty" 
      android:layout_below="@id/quantity_text_view" 
      android:id="@+id/increment_button" 
      android:onClick="increment" 
      android:layout_width="48dp" 
      android:layout_height="48dp" 
      android:text="+" 
      /> 
     <Button 
      android:id="@+id/submit_button" 
      android:layout_marginTop="20dp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="order" 
      android:onClick="submitOrder" 
      android:gravity="center_vertical" 
      android:layout_below="@id/decrement_button" 
      /> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:gravity="center_vertical" 
      android:id="@+id/order_summary_text_view" 
      android:textAllCaps="true" 
      android:textStyle="bold" 
      android:textSize="16sp" 
      android:layout_below="@id/submit_button" 
      /> 
    </RelativeLayout> 

</ScrollView> 

,这是我MainActivity.java文件

package com.orton.birthdaycard; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.text.Editable; 
import android.util.Log; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.TextView; 
import java.text.NumberFormat; 
public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
    } 
    int quantity=1; 
    private void increment(View view) 
    { 
     if(quantity==100) 
      return; 
     else 
     quantity++; 
     displayQuantity(quantity); 
    } 
    private void decrement(View view) 
    { 
     if(quantity==1) 
      return; 
     else 
      quantity--; 
     displayQuantity(quantity); 
    } 
    private void displayQuantity(int qty) 
    { 
     TextView quantityTextView=(TextView) findViewById(R.id.initial_qty); 
     quantityTextView.setText(String.valueOf(quantity)); 
     Log.v("MainActivity","the quantity is " + quantity); 
    } 
    int basePrice; 
    private int calculatePrice(boolean hasWhippedCream,boolean hasChocolate) 
    { 
     basePrice = 5; 
     if(hasWhippedCream==true) 
      basePrice += 1; 
     if(hasChocolate==true) 
      basePrice +=2 ; 
     return basePrice=basePrice*quantity; 

    } 
    String priceMessage=""; 
    private void submitOrder(View view) 
    { 
     EditText nameField = (EditText) findViewById(R.id.name_text_field); 
     String name = nameField.getText().toString(); 

     CheckBox whippedCream = (CheckBox) findViewById(R.id.whipped_cream); 
     boolean hasWhippedCream = whippedCream.isChecked(); 
     CheckBox chocolate = (CheckBox) findViewById(R.id.chocolate); 
     boolean hasChocolate = chocolate.isChecked(); 

     int price=calculatePrice(hasWhippedCream,hasChocolate); 
     String orderSummary=createOrderSummary(name,price,hasWhippedCream,hasChocolate); 
     displayMessage(orderSummary); 
    } 
    private void displayMessage(String orderSummary) 
    { 
     TextView summary= (TextView) findViewById(R.id.order_summary_text_view); 
     summary.setText(""+orderSummary); 
    } 
    private String createOrderSummary(String name, int price, boolean hasWhippedCream, boolean hasChocolate) 
    { 
     String priceMessage = "Name :" + name; 
     if(hasWhippedCream) 
     priceMessage += "\nWhipped Cream Added" ; 
     if(hasChocolate) 
      priceMessage += "\nChocolate Added" ; 
     priceMessage+="\nQuantity : "+quantity; 
     priceMessage+="\nTotal : $"+price; 
     priceMessage+="Thank You!" ; 
     return priceMessage; 
    } 

} 

这是调试报告 05-23 22:14:45.695 29736-29736/com.orton.birthdaycard E/AndroidRuntime:致命异常:主 工艺:com.orton.birthdaycard,PID:29 736 java.lang.IllegalStateException:无法在父代或祖先中查找方法增量(View)在android.support上使用ID为'increment_button'的视图类android.support.v7.widget.AppCompatButton上定义的android:onClick属性 .v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) at android.view.View.performClick(View .java:5612) at android.view.View $ PerformClick.run(View.java:22285) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.disp atchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6123) at java.lang.reflect.Method。调用(本地方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

+0

方法的onclick必须是公共 – Pavan

回答

2

你的方法必须使用public修改:

public void increment(View view) 
    { 
     if(quantity==100) 
      return; 
     else 
     quantity++; 
     displayQuantity(quantity); 
    } 
0

做申报按钮此

increment_button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 

,而不是android:onClick="increment"

+0

这两个实现的工作,这不是她的问题 –

+0

没有ü尝试我的回答的答案? –

+0

**从复审队列**:我可以请求您在源代码中添加一些上下文。仅有代码的答案很难理解。如果您可以在帖子中添加更多信息,它可以帮助提问者和未来的读者。 – RBT

相关问题