2012-06-28 1 views
0

Итак, я делаю проверку, если идентификатор находится в базе данных или нет, идентификатор находится в числовой строке, но тип в базе данных - char (6).Принудительное закрытие только при вставке алфавитной строки в текст редактирования

Так что это мой код

public class input extends Activity{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.input); 

     final EditText edittext = (EditText)findViewById(R.id.editText1); 
     Button button = (Button)findViewById(R.id.button1); 

     button.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       String nopel = edittext.getText().toString();    

       if(nopel.length() == 0){ 
        Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show(); 
       }else{ 
        List<NameValuePair> pairs = new ArrayList<NameValuePair>(); 
        pairs.add(new BasicNameValuePair("nopel", nopel)); 

        JSON json_dp = new JSON(); 
        JSONObject jobj_dp = json_dp.getJSON("http://10.0.2.2/KP/pdam/nopel.php", pairs); 

        try { 
         if(jobj_dp.getInt("row") == 0){ 
          Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT).show(); 
         }else{ 
          String snopel = jobj_dp.getString("nopel"); 
          String snama = jobj_dp.getString("nama"); 
          String salamat = jobj_dp.getString("alamat"); 
          String sgolongan = jobj_dp.getString("golongan"); 

          Intent i = new Intent(input.this, list.class); 
          i.putExtra("nopel", snopel); 
          i.putExtra("nama", snama); 
          i.putExtra("alamat", salamat); 
          i.putExtra("golongan", sgolongan); 
          startActivity(i); 
         } 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        }     
       } 
      }   
     }); 
    } 
} 

первый чек, чтобы проверить, если вход имеет нулевое значение, это происходит прямо сейчас, то вторая проверка должна проверить, если идентификатор в базе данных, и это проблема. Когда я пытаюсь использовать некоторый идентификатор в числовом значении типа «0001» или «02013», это нормально и может работать. но когда мне просто нужно было положить «абуд», он заставил закрыть. кто-нибудь знает, почему я получил это?

Это list.class

public class list extends Activity{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list); 

     Intent i = getIntent(); 
     String nopel = i.getStringExtra("nopel"); 
     String nama = i.getStringExtra("nama"); 
     String alamat = i.getStringExtra("alamat"); 
     String golongan = i.getStringExtra("golongan"); 

     TextView t1 = (TextView)findViewById(R.id.textView1); 
     TextView t2= (TextView)findViewById(R.id.textView2); 
     TextView t3 = (TextView)findViewById(R.id.textView3); 
     TextView t4 = (TextView)findViewById(R.id.textView4); 

     t1.setText(nopel); 
     t2.setText(nama); 
     t3.setText(alamat); 
     t4.setText(golongan); 
    } 
} 

и это то, что там на LogCat

06-28 16:14:18.244: W/KeyCharacterMap(253): No keyboard for id 0 
06-28 16:14:18.254: W/KeyCharacterMap(253): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
06-28 16:14:22.394: D/AndroidRuntime(253): Shutting down VM 
06-28 16:14:22.404: W/dalvikvm(253): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
06-28 16:14:22.404: E/AndroidRuntime(253): Uncaught handler: thread main exiting due to uncaught exception 
06-28 16:14:22.414: E/AndroidRuntime(253): java.lang.NullPointerException 
06-28 16:14:22.414: E/AndroidRuntime(253): at pdam.tirta.raharja.input$1.onClick(input.java:47) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.View.performClick(View.java:2364) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.View.onTouchEvent(View.java:4179) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.widget.TextView.onTouchEvent(TextView.java:6541) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.View.dispatchTouchEvent(View.java:3709) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884) 
06-28 16:14:22.414: E/AndroidRuntime(253): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659) 
06-28 16:14:22.414: E/AndroidRuntime(253): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.app.Activity.dispatchTouchEvent(Activity.java:2061) 
06-28 16:14:22.414: E/AndroidRuntime(253): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.os.Looper.loop(Looper.java:123) 
06-28 16:14:22.414: E/AndroidRuntime(253): at android.app.ActivityThread.main(ActivityThread.java:4363) 
06-28 16:14:22.414: E/AndroidRuntime(253): at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 16:14:22.414: E/AndroidRuntime(253): at java.lang.reflect.Method.invoke(Method.java:521) 
06-28 16:14:22.414: E/AndroidRuntime(253): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
06-28 16:14:22.414: E/AndroidRuntime(253): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
06-28 16:14:22.414: E/AndroidRuntime(253): at dalvik.system.NativeStart.main(Native Method) 
06-28 16:14:22.424: I/dalvikvm(253): threadid=7: reacting to signal 3 
06-28 16:14:22.424: E/dalvikvm(253): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
+1

Пожалуйста, добавьте трассировку стека от mlogcat –

+0

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

+0

может быть для недопустимого числа «abushd», вы получаете jobj_dp null, а jobj_dp.getInt («строка») выдает ошибку, тогда .. можете попробовать с if (null! = Jobj_dp) сразу после попытки ... –

ответ

1

Вы с помощью jobj_dp.getInt("row"). Конечно, если он сработает, если значение, содержащееся в строке, не является целым числом.

Вместо этого использовать getString().

Смежные вопросы