2016-04-13 22 views
1

私はEditTextと保存ボタンを持つフラグメントがあります。ユーザーが保存ボタンをクリックすると、編集テキスト値が範囲外か同じデータ型かどうかを確認する必要があります。この場合、値の型は "FLOAT"で、範囲は "0.00 - 1000.00"でなければなりません。android studio edittextフィールド値の変換

ここに、私のfragment.javaコードがあります。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 

    View v = inflater.inflate(R.layout.field_fragment,container, false); 

    int field = getArguments().getInt("field"); 

    //Modify label 
    // TextView fieldLabel = (TextView)v.findViewById(field); 
    //fieldLabel.setText(MainActivity.pageNames[field]); 

    return v; 


} 

public void onStart() { 
    super.onStart(); 
    //---Button view--- 
    Button save = (Button) 
      getActivity().findViewById(R.id.saveButton); 


    save.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 




      try{ 
      Float conductivity = Float.parseFloat(conductivity_field.getText().toString()); 

       if (conductivity > 0.F && conductivity < 1000.F) { 
        Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show(); 
       } else { 

        //conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint 
        Toast.makeText(getActivity(), "Wrong value for float", Toast.LENGTH_SHORT).show(); 

       } 


     }catch(Exception e){ 
       Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }); 
} 

ので

が何らかのがある「....値MSGの変換エラー」私はこれらのエラーを表示するようにしようとしているが、私はそれをクリックしたときに、それがあれば条件を無視し、例外とディスプレイをキャッチ他の方法?

+0

を長さが0または長さに等しい場合は、のEditTextの長さを確認することができますすることは1000年 –

+0

Whaは、その後も大きいですあなたはedittextに値を入力しましたか? –

+0

@VasilyKabunov私はちょうどその値が範囲の間にある場合でも、毎回スキップするだけで、10,23.2 900を入力しました –

答えて

0

は、このコードによって、あなたのコードを置き換えフロートするのEditText値を解析中に例外を取得 - >

EditText conductivity_field; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
     View v = inflater.inflate(R.layout.field_fragment,container, false); 
     conductivity_field = (EditText) v.findViewById(R.id.conductivity_value); 

     int field = getArguments().getInt("field"); 

     //Modify label 
     // TextView fieldLabel = (TextView)v.findViewById(field); 
     //fieldLabel.setText(MainActivity.pageNames[field]); 

     return v; 


    } 

    public void onStart() { 
     super.onStart(); 
     //---Button view--- 
     Button save = (Button) 
       getActivity().findViewById(R.id.saveButton); 


     save.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       try{ 
        Float conductivity = Float.parseFloat(conductivity_field.getText().toString()); 

        if (conductivity > 0.F && conductivity < 1000.F) { 
         Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show(); 
        } else { 

         //conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint 
         Toast.makeText(getActivity(), "Wrong value for float , BITCH", Toast.LENGTH_SHORT).show(); 

        } 


       }catch(Exception e){ 
        Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
    } 
+0

これは働いていた高校!!! –

+0

あなたも、UpVoteを置くことを歓迎します。 :) –

+0

私も別の問題で私を助けることができますか?その小さな1つ –

0
Button save; 
Edittext conductivity_field;  

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.field_fragment, container, false); 
      initViews(view); 
      return view; 
}  

public void initViews(View v) { 
       conductivity_field = (EditText) v.findViewById(R.id.conductivity_value); 
       save= (Button) v.findViewById(R.id.saveButton); 

       save.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 

         try { 
          Float conductivity = Float.parseFloat(edittext.getText().toString()); 

          if (conductivity > 0f && conductivity < 1000f) { 
           Toast.makeText(getActivity(), "The value is correct", Toast.LENGTH_SHORT).show(); 
          } else { 

           //conductivity_field.setText(R.string.conductivity_field);//set text of the edittext back to the hint 
           Toast.makeText(getActivity(), "Wrong value for float", Toast.LENGTH_SHORT).show(); 

          } 


         } catch (Exception e) { 
          Toast.makeText(getActivity(), "Error converting values. Please enter correct value.", Toast.LENGTH_SHORT).show(); 
         } 

        } 
       }); 

    } 
+0

私はjavaファイル全体のために自分のコードを入れました。それをチェックして、テキストの編集を初期化する場所を教えてください.... –

+0

@JanamRajbhandari plzは私の編集した答えをチェックします。 –

+0

それはあまりにも働いた:)しかし、上の1つは私が必要としたものでした:Dはあなたに感謝 –

0

は、フラグメントのonCreateView方法にのEditTextを初期化し、入力された値を取得するためのEditTextの参照を使用し、あなたが何をしているか 、conductivity_fieldという名前の新しいのEditTextを初期化すると、デフォルトでその値は空白ですので、あなたは、

関連する問題