2014-10-05 3 views
1

영어로 죄송합니다! BigDecimal에 문제가 있습니다. SQLiteDatabase를 만들었습니다. 이제 검색보기로 검색하고 싶습니다.문자열 to BigDecimal

private void showResults(String query) { 

    Cursor cursor = mDbHelper.searchCustomer((query != null ? query.toString() : "@@@@[email protected]@")); 

    if (cursor == null) { 
     // 
    } else { 
     // Specify the columns we want to display in the result 
     String[] from = new String[] { 
       ItemDbAdapter.KEY_1, 
       ItemDbAdapter.KEY_2, 
       ItemDbAdapter.KEY_3, 
       ItemDbAdapter.KEY_4, 
       ItemDbAdapter.KEY_5, 
       ItemDbAdapter.KEY_6, 
       ItemDbAdapter.KEY_7, 
       ItemDbAdapter.KEY_8}; 

     // Specify the Corresponding layout elements where we want the 
     // columns to go 
     int[] to = new int[] { 
       R.id.result_1, 
       R.id.result_2, 
       R.id.result_3, 
       R.id.result_4, 
       R.id.result_5, 
       R.id.result_6, 
       R.id.result_7, 
       R.id.result_8}; 

     SimpleCursorAdapter customers = new SimpleCursorAdapter(this, 
       R.layout.customresult, cursor, from, to); 
     mListView.setAdapter(customers); 

     mListView.setOnItemClickListener(new OnItemClickListener() {     
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       np.setValue(100); //Numberpicker 


       Cursor cursor = (Cursor) mListView.getItemAtPosition(position);     


       String 1 = cursor.getString(cursor.getColumnIndexOrThrow("1")); 
       String 2 = cursor.getString(cursor.getColumnIndexOrThrow("2")); 
       String 3 = cursor.getString(cursor.getColumnIndexOrThrow("3")); 
       String 4 = cursor.getString(cursor.getColumnIndexOrThrow("4")); 
       String 5 = cursor.getString(cursor.getColumnIndexOrThrow("5")); 
       String 6 = cursor.getString(cursor.getColumnIndexOrThrow("6")); 
       String 7 = cursor.getString(cursor.getColumnIndexOrThrow("7")); 
       String 8 = cursor.getString(cursor.getColumnIndexOrThrow("8")); 


       RelativeLayout customerLayout = (RelativeLayout) findViewById(R.id.custominfoLayout); 
       if (customerLayout == null) { 
        // Inflate the Customer Information View 
        RelativeLayout leftLayout = (RelativeLayout) findViewById(R.id.rightLayout); 
        View customerInfo = getLayoutInflater().inflate(
          R.layout.custominfo, leftLayout, false); 
        leftLayout.addView(customerInfo); 
       } 


       Tv1 = (TextView) findViewById(R.id.info_i); 
       Tv2 = (TextView) findViewById(R.id.info_a); 
       Tv3 = (TextView) findViewById(R.id.info_k); 
       Tv4 = (TextView) findViewById(R.id.info_B); 
       Tv5 = (TextView) findViewById(R.id.info_k); 
       Tv6 = (TextView) findViewById(R.id.info_k2); 
       Tv7 = (TextView) findViewById(R.id.info_P); 
       Tv8 = (TextView) findViewById(R.id.info_F); 


       Tv1.setText(1); 
       Tv2.setText(2); 
       Tv3.setText(3); 
       Tv4.setText(4); 
       Tv5.setText(5); 
       Tv6.setText(6); 
       Tv7.setText(7); 
       Tv8.setText(8); 

       searchView.setQuery("", true); 

여기까지는 효과가 있습니다. 내가 찾는 것은 보여진다.

10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : 치명적인 예외 : 10 주

내가 BigDecimal의의 값을 저장하려면

,이 오류 메시지가 -05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : 프로세스 : com.XXX.XXXX, PID : 28053 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.lang.NumberFormatException : Invalid long : "0,3" 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.lang.invalidLong (Long.java:124) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.lang.Long.parse (Long.java:361) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : (Long.java:318) 에서 10/15 17:58:51:759 : E/AndroidRuntime (28053) : java.lang.Long.parseLong에서 (Long.java:352) 10-05 17 : 58 : 51.759 : 05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.math.BigDecimal에서 (BigDecimal.java:344) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.math. BigDecimal를 (BigDecimal.java:425) 10-05 17 :. 58 : E/AndroidRuntime (28053) : com.XXX.XXXX.ListeActivity $ 1.onItemClick (ListeActivity.java:288)에서

10 51.759 05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.widget.AdapterView.performItemClick (AdapterView.java:299) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.widget .AbsListView.performItemClick (AbsListView.java:1113) 10-05 17 : 58 : 51.759 : E/AndroidR (28053) : android.widget.AbsListView $ PerformClick.run (AbsListView.java:2911) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.widget.AbsListView $ 3.run (AbsListView .java : 3645) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.os.Handler.handleCallback (Handler.java:733) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.os.Handler.dispatchMessage (Handler.java:95) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.os.Looper.loop (Looper.java:136)) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : android.app.ActivityThread.main (ActivityThread.java:5001) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : (네이티브 메소드) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : java.lang.reflect.Method.invoke (Method.java : java.lang.reflect.Method.invokeNative) 515) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:785) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:601) 10-05 17 : 58 : 51.759 : E/AndroidRuntime (28053) : dalvik.system.NativeStart. 주 (기본 방법)

는 계속 내 :이 오류가 온다 왜 이해가 안

   Sa = String.valueOf(Tv1.getText()); 
       Sb = String.valueOf(Tv2.getText()); 
       Sc = String.valueOf(Tv3.getText()); 
       Sd = String.valueOf(Tv4.getText()); 
       Se = String.valueOf(Tv5.getText()); 
       Sf = String.valueOf(Tv6.getText()); 
       Sg = String.valueOf(Tv7.getText()); 




       Big1 = new BigDecimal(Sa); 
       Big2 = new BigDecimal(Sb); 
       Big3 = new BigDecimal(Sc); 
       Big4 = new BigDecimal(Sd); 
       Big5 = new BigDecimal(Se); 
       Big6 = new BigDecimal(Sf); 
       Big7 = new BigDecimal(Sg); 

.

String 및 BigDecimal에서만 작동하지만 오류는 float입니다.

+1

완전한 스택 추적을 보여주십시오. (변수를 더 의미있는 이름으로 지정하는 것도 좋지만 다른 문제입니다.) –

답변

0

java variable names cant be just numbers, or even start with a number.

String 1 = cursor.getString(cursor.getColumnIndexOrThrow("1")); 
String 2 = cursor.getString(cursor.getColumnIndexOrThrow("2")); 
.... 

나중에 빌드 당신에게 경고를 준해야

Tv1.setText(1); 
Tv2.setText(2); 

설정합니다.

+0

고맙습니다. 이미 작성했습니다. BigDecimal에 값을 저장하려면 오류 메시지가 표시됩니다. – NewYorker

+0

새로운 변경 사항으로 질문을 업데이트하고 이전 코드를 제거하십시오. – ashoke

+0

코드를 변경하지 않았습니다. 위의 코드에서, 나는 그들의 예를 들었다. – NewYorker

0

변수 이름 1, 2, 3, 4, 5, ...이 유효한 변수 이름인지 궁금합니다. firstColumnText 또는 ArrayList과 같은 변수 이름을 사용하는 것이 좋습니다. 따라서 발생한 오류가이 문제의 대상이 될 수 있습니다.

또한 표시된 오류는 float이지만 분명히 그렇지 않다고 주장합니다. 0,3은 쉼표로 구분 된 BigDecimals 또는 다른 목록 일 수 있습니다.

제공하신 정보에서 문제에 대해 제안 할 수는 없지만 checkstyle과 같은 도구를 사용하여 피할 수있는 문제는 기본 Android 스타일입니다.

+0

감사합니다! 문제가 0.3으로 변경되었습니다. 이제 작동합니다. – NewYorker