2016-11-15 10 views
0

私はチェックボックスのリストを持っています。チェックされていれば、曜日を配列リストに追加します。アクティビティを開始できませんComponentInfo:java.lang.NumberFormatException:入力文字列: ""

package com.example.joshpc.bluetoothattendee; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 

import java.util.ArrayList; 

public class Sel_Dates extends AppCompatActivity { 
CheckBox mon; 
CheckBox tues; 
CheckBox wed; 
CheckBox thur; 
CheckBox fri; 
Button selectBut; 
ArrayList<String> days = new ArrayList<String>(); 

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

    mon = (CheckBox) findViewById(R.id.cbMon); 
    tues = (CheckBox) findViewById(R.id.cbTues); 
    wed = (CheckBox) findViewById(R.id.cbWed); 
    thur = (CheckBox) findViewById(R.id.cbThurs); 
    fri = (CheckBox) findViewById(R.id.cbFri); 
    selectBut = (Button) findViewById(R.id.bSelectDate); 

    selectBut.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      getDates(); 
      sendTo(); 
     } 
    }); 
} 

private void getDates(){ 
    if(mon.isChecked()) 
     days.add("monday"); 
    if(tues.isChecked()) 
     days.add("tuesday"); 
    if(wed.isChecked()) 
     days.add("wednesday"); 
    if(thur.isChecked()) 
     days.add("thursday"); 
    if(fri.isChecked()) 
     days.add("friday"); 
} 
private void sendTo(){ 
    Intent intent = new Intent(this, Create_Class.class); 
    intent.putStringArrayListExtra("days", days); 
    startActivity(intent); 
} 
} 

と私のデバッグ出力:

FATAL EXCEPTION: main 
       Process: com.example.joshpc.bluetoothattendee, PID: 2318 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.joshpc.bluetoothattendee/com.example.joshpc.bluetoothattendee.Create_Class}: java.lang.NumberFormatException: For input string: "" 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        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) 
       Caused by: java.lang.NumberFormatException: For input string: "" 
        at java.lang.Integer.parseInt(Integer.java:533) 
        at java.lang.Integer.parseInt(Integer.java:556) 
        at com.example.joshpc.bluetoothattendee.Create_Class.onCreate(Create_Class.java:38) 
        at android.app.Activity.performCreate(Activity.java:6679) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  
        at android.app.ActivityThread.-wrap12(ActivityThread.java)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        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)  

Create_Classコード私はここ

がSel_Datesクラスから私のコードです)(のSendToに見られるように、別のクラスにその配列リストを渡したいです:

package com.example.joshpc.bluetoothattendee; 

import android.content.Intent; 
import android.provider.ContactsContract; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.FirebaseUser; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 

import java.util.ArrayList; 

public class Create_Class extends AppCompatActivity { 


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

    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    final DatabaseReference fbRef = FirebaseDatabase.getInstance().getReference(); 

    Button createBut = (Button) findViewById(R.id.bCreate); 
    EditText etstartTime = (EditText) findViewById(R.id.etStartTime); 
    EditText etclassID = (EditText) findViewById(R.id.etID); 
    EditText etname = (EditText) findViewById(R.id.etClassName); 

    final ArrayList<String> days = getIntent().getStringArrayListExtra("days"); 
    final String teacherID = user.getUid(); 
    final String name = etname.getText().toString(); 
    final String classID = etclassID.getText().toString(); 
    final int startTime = Integer.parseInt(etstartTime.getText().toString()); 

    createBut.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      ClassObj newClass = new ClassObj(name, classID, teacherID, startTime, days); 
      fbRef.child(user.getUid()).setValue(newClass); 
      sendTo(Main__Menu.class); 
     } 
    }); 

} 

private void sendTo(Class s){ 
    Intent intent = new Intent(this, s); 
    startActivity(intent); 
} 
} 

編集:私は問題がこれらのコード行から来ていると思います

final int startTime = Integer.parseInt(etstartTime.getText().toString()); 

    createBut.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      ClassObj newClass = new ClassObj(name, classID, teacherID, startTime, days); 
      fbRef.child(user.getUid()).setValue(newClass); 
      sendTo(Main__Menu.class); 
     } 
    }); 

具体的には、HH:MMという形式の文字列として読み込まれるstartTimeを解析します。これをintではなくstring値に変更し、何が起こるかを見てみましょう。

+1

ポスト 'Create_Class'のJavaコードを試してみるべきである空の場合は、数値データに空の文字列を入れることはできません。 – Ironman

+0

コードのどの部分にエラーが発生していますか? – WritingForAnroid

答えて

3

それは代わりにintent.putStringArrayListExtra("days", days) の0

+0

これはどこですか? – ThePeskyWabbit

+0

final int startTime = Integer.parseInt(etstartTime.getText()。toString()); デフォルト値をetstartTime、etstartTimeに追加します.setText( "0"); – zerocool

+0

ああありがとう – ThePeskyWabbit

2

空白文字列を解析しているため、数値書式の例外が発生しています。パースする前に文字列を空白にしないでください。

解析する前に空白またはヌルにしないでください。この例外を回避するには、try catch catchブロックを適切に処理するか、文字列 "0"のデフォルト値を設定してください。

String str="0"; 
    try { 
     int val=Integer.parseInt(str); 
    }catch (NumberFormatException e){ 
     System.out.println("not a number"); 
    } 
1

問題になっているこのintent.putExtra("days", days)

関連する問題