2017-01-15 4 views
-1

Привет всем я новичок здесь, так что это мой первый постприложения происходит сбой при нажатии кнопки

Я хочу построить свой первый андроид приложение, и это будет калькулятор GPA, чтобы быть точным, но каждый раз, когда я нажимаю кнопку расчета аварий приложения я использую Android Studio и вот код Java

package com.example.mac.gpacalculator; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

TextView result; 
EditText grade1; 
EditText grade2; 
EditText grade3; 
EditText grade4; 
EditText grade5; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
    result=(TextView) findViewById(R.id.total); 
    grade1=(EditText)findViewById(R.id.num1); 
    grade2=(EditText)findViewById(R.id.num2); 
    grade3=(EditText)findViewById(R.id.num3); 
    grade4=(EditText)findViewById(R.id.num4); 
    grade5=(EditText)findViewById(R.id.num5); 

    final Button calcbtn= (Button) findViewById(R.id.calc); 
    calcbtn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      double c1 = Float.parseFloat(grade1.getText().toString()); 
      c1=convert(String.valueOf(grade1)); 

      double c2 = Float.parseFloat(grade2.getText().toString()); 
      c1=convert(String.valueOf(grade2)); 

      double c3 = Float.parseFloat(grade3.getText().toString()); 
      c1=convert(String.valueOf(grade3)); 

      double c4 = Float.parseFloat(grade4.getText().toString()); 
      c1=convert(String.valueOf(grade4)); 

      double c5 = Float.parseFloat(grade5.getText().toString()); 
      c1=convert(String.valueOf(grade5)); 
      double c6=calculation(c1,c2,c3,c4,c5); 
      result.setText((int) c6); 

     } 


    }); 
} 

@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; 
} 
public static double convert(String grade) 
{ 
    double a=0.0; 
    //checking the conditions 

    if(grade.equalsIgnoreCase("A")) 
    { 
     a=4.0; 
    } 
    if(grade.equalsIgnoreCase("A-")) 
    { 
     a=3.7; 
    } 
    if(grade.equalsIgnoreCase("B+")) 
    { 
     a=3.3; 
    } 
    else if(grade.equalsIgnoreCase("B")) 
    { 
     a=3.0; 
    } 
    if(grade.equalsIgnoreCase("B-")) 
    { 
     a=2.7; 
    } 
    if(grade.equalsIgnoreCase("C+")) 
    { 
     a=2.3; 
    } 
    else if(grade.equalsIgnoreCase("C")) 
    { 
     a=2.0; 
    } 
    if(grade.equalsIgnoreCase("C-")) 
    { 
     a=1.7; 
    } 
    if(grade.equalsIgnoreCase("D+")) 
    { 
     a=1.3; 
    } 
    else if(grade.equalsIgnoreCase("D")) 
    { 
     a=1.0; 
    } 
    else if(grade.equalsIgnoreCase("F")) 
    { 
     a=0.0; 
    } 


    return a; 

} 
public static double calculation(double c1, double c2, double c3, double c4, double c5) 
{ 
    double operation; 
    operation=(c1+c2+c3+c4+c5)/5;//calculating the GPA 
    return operation; 

} 

@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); 
} 
} 

и вот XML-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/content_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.example.mac.gpacalculator.MainActivity" 
tools:showIn="@layout/activity_main"> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/num4" 
    android:layout_below="@+id/num3" 
    android:layout_alignStart="@+id/num3" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-" 
    android:textAlignment="center" 
    android:hint="Grade" 
    android:inputType="text" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/num5" 
    android:layout_below="@+id/num4" 
    android:layout_alignStart="@+id/num4" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-" 
    android:textAlignment="center" 
    android:hint="Grade" 
    android:inputType="text" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/num2" 
    android:layout_below="@+id/num1" 
    android:layout_alignStart="@+id/num1" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-" 
    android:textAlignment="center" 
    android:hint="Grade" 
    android:inputType="text" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/num3" 
    android:inputType="text" 
    android:textAlignment="center" 
    android:hint="Grade" 
    android:layout_below="@+id/num2" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-" 
    android:layout_alignStart="@+id/num2" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/num1" 
    android:hint="Grade" 
    android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+-" 
    android:textAlignment="center" 
    android:layout_marginTop="49dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:inputType="text" /> 

<Button 
    android:text="CALCULATE" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/calc" 
    android:layout_marginTop="24dp" 
    android:layout_below="@+id/num5" 
    android:layout_centerHorizontal="true" 
    android:onClick="calculation"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="50dp" 
    android:id="@+id/total" 
    android:hint="0" 
    android:layout_below="@+id/calc" 
    android:layout_centerHorizontal="true" 
    android:textSize="50sp" /> 

</RelativeLayout> 

Кроме того, где я могу узнать больше о Android разработки вы можете порекомендовать мне некоторые ресурсы, такие как книги, веб-сайты и т. д., которые мне очень понравились бы. Спасибо заранее.

эх жаль я не включил сообщение об ошибке,

FATAL EXCEPTION: main 
       Process: com.example.mac.gpacalculator, PID: 2327 
       java.lang.NumberFormatException: empty String 
        at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071) 
        at java.lang.Float.parseFloat(Float.java:459) 
        at com.example.mac.gpacalculator.MainActivity$2.onClick(MainActivity.java:51) 
        at android.view.View.performClick(View.java:5637) 
        at android.view.View$PerformClick.run(View.java:22429) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6119) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
Application terminated. 
+1

сообщение вашего журнала аварии меда XoXo и кнопка, которая ?? –

+0

Начать обучение с [developer.android.com] (https://developer.android.com/guide/index.html) – Onivas

+0

вы пытаетесь преобразовать строку в число –

ответ

0

Вы должны иметь Button btn = (Button) findViewById(R.id.button); в противном случае вы будете бросать NullPointerException. Проверьте монитор Android, чтобы убедиться, что он соответствует этой ошибке.

+0

У меня есть кнопка calcbtn = (Button) findViewById (R.id.calc); –

0

Вы добавили android:onClick="calculation" в вашем XML <Button> тег так определить метод, называемый расчет, который принимает вид в коде ..

или просто использовать calcbtn.setOnClickListener ... в коде и удалить android:onClick="calculation" от кнопки тега

не следует использовать оба android:onClick="calculation и view.setOnClick .. за те же вид ..

Там нет идентификатора называется fab в вашем XML так добавить FloatingActionButton и дать этот идентификатор для него или комментария FloatingActionButton fab ....});

+0

@ Ара Кава вы исправили свою проблему? –

0

Я вижу множественная здесь ошибка:

  • Как ответил @charuka, вы добавили метод в кнопке android:onClick="calculation, которые не могут быть найдены на андроид и вызывают сбой.

  • вы пытаетесь разобрать EditText в String, который не String, здесь: convert(String.valueOf(grade1));, изменить его convert(grade1.getText().toString());