2017-10-06 53 views
-1

這是我的第一個應用程序項目,我很興奮!我不能讓「拆分」按鈕工作(它必須將總數除以「人物」中設置的人數)。第一個百分比按鈕工作正常,但不是最後一個「分割!」。如何製作「分割它!」按鈕在我的應用程序工作?

我學到了很多,我喜歡它!

xml.file

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activiy_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="16dp" 
    android:paddingBottom="16dp" 
    tools:context="com.example.dell.calculator.MainActivity" 
    android:weightSum="1"> 


    <EditText 
     android:id="@+id/subtotal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Subtotal" 
     android:inputType="number|numberDecimal" /> 

    <EditText 
     android:id="@+id/itbms" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="ITBMS" 
     android:inputType="number|numberDecimal" /> 

    <Button 
     android:id="@+id/diez" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="10%" /> 

    <Button 
     android:id="@+id/quince" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="15%" /> 

    <Button 
     android:id="@+id/veinte" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="20%" /> 

    <TextView 
     android:id="@+id/result" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.18" 
     android:text="TOTAL" 
     android:textSize="25dp" 
     android:inputType="numberDecimal"/> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Number of People" 
     android:layout_weight="0.09" /> 

    <EditText 
     android:id="@+id/people" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:textSize="25dp" 
     android:inputType="number" /> 

    <Button 
     android:id="@+id/split" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Split It!" /> 

    <EditText 
     android:id="@+id/finalresult" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.55" 
     android:ems="10" 
     android:hint="EACH" 
     android:inputType="numberDecimal" /> 

</LinearLayout> 

Mainactivity.java

package com.example.dell.calculator; 

import android.icu.text.NumberFormat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.util.Locale; 

import static com.example.dell.calculator.R.id.add; 

public class MainActivity extends AppCompatActivity { 

    TextView result, finalresult; 
    EditText subtotal, itbms, people; 
    Button diez, quince, veinte, split; 

    float result_num, result_num2; 
    int num1, num2, num3, num4; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     result = (TextView) findViewById(R.id.result); 
     finalresult = (TextView) findViewById(R.id.finalresult); 

     itbms = (EditText) findViewById(R.id.itbms); 
     subtotal = (EditText) findViewById(R.id.subtotal); 

     diez = (Button) findViewById(R.id.diez); 
     quince = (Button) findViewById(R.id.quince); 
     veinte = (Button) findViewById(R.id.veinte); 

     diez.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       num1 = Integer.parseInt(subtotal.getText().toString()); 
       num2 = Integer.parseInt(itbms.getText().toString()); 
       result_num = (float) ((num1 + num2) * 1.10); 
       result.setText(String.valueOf(result_num)); 
      } 
     }); 

     quince.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       num1 = Integer.parseInt(subtotal.getText().toString()); 
       num2 = Integer.parseInt(itbms.getText().toString()); 
       result_num = (float) ((num1 + num2) * 1.15); 
       result.setText(String.valueOf(result_num)); 
      } 

     }); 

     veinte.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       num1 = Integer.parseInt(subtotal.getText().toString()); 
       num2 = Integer.parseInt(itbms.getText().toString()); 
       result_num = (float) ((num1 + num2) * 1.20); 
       result.setText(String.valueOf(result_num)); 
      } 

     }); 


     split.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       num4 = (int) result_num; 
       num3 = Integer.parseInt(people.getText().toString()); 
       result_num2 = (float) num4/num3; 
       finalresult.setText(String.valueOf(result_num2)); 

      } 

     }); 


    } 


} 

回答

0

你忘了獲得該按鈕觀看基準:

更改此:

 diez = (Button) findViewById(R.id.diez); 
     quince = (Button) findViewById(R.id.quince); 
     veinte = (Button) findViewById(R.id.veinte); 

此:

 diez = (Button) findViewById(R.id.diez); 
    quince = (Button) findViewById(R.id.quince); 
    veinte = (Button) findViewById(R.id.veinte); 
    split = (Button) findViewById(R.id.split); 

這種錯誤可以通過閱讀應用程序日誌來檢測。我確定引起的split.setOnClickListener(拆分是null)引起的問題。

+0

我包含在拆分按鈕的setOnClickListener按鈕觀看基準,不僅不工作,但模擬器無法打開應用程序。感謝您的答覆。 – Javi

+0

你添加了這個split =(Button)findViewById(R.id.split);?你爲其他按鈕做了這個 – Pablo

+0

我應該在哪裏添加代碼?我將它包含在每個帶有通訊員ID的按鈕中,並放入setOnClick但不起作用。 :( – Javi

0

這對於初學者來說是完全正常的。我建議你同時聲明和初始化視圖對象(Button,TextView..etc) 。

Button split = (Button) findViewById(R.id.split); 
+0

我該怎麼做? – Javi

+1

我的回答是一個建議,以避免這種錯誤。請參閱帕布羅先生的回答。我還建議你刷一些JAVA基礎知識[JAVA基礎知識](http://docs.oracle.com/javase/tutorial/index.html)。並參考android文檔[Android指南](https://developer.android.com/reference /packages.html)。 – StabCode

相關問題