2012-04-13 5 views
0

quand je vais sur cette page et cliquez sur le bouton de retour, je reçois une force de fermeture, parce que la force ferme mon résultat de lecture de codes à barres ne montre pas. Comment puis-je arrêter la fermeture de la force de l'application?Forcer Fermer lorsque vous appuyez sur le bouton Retour

private EditText mTitleText; 
private EditText mBodyText; 
private EditText mquantityint; 
private EditText mbarcodeint; 
private Long mRowId; 
private NotesDbAdapter mDbHelper; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mDbHelper = new NotesDbAdapter(this); 
    mDbHelper.open(); 

    setContentView(R.layout.note_edit); 

    mTitleText = (EditText) findViewById(R.id.title); 
    mBodyText = (EditText) findViewById(R.id.body); 
    mquantityint = (EditText) findViewById(R.id.quantity); 
    mbarcodeint = (EditText) findViewById(R.id.barcode); 

    Button barcode2 = (Button) findViewById(R.id.sbarcode); 
    barcode2.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) 
     { 
      Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
      intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); 
      intent.putExtra("SAVE_HISTORY", false);//this stops saving ur barcode in barcode scanner app's history 
      startActivityForResult(intent, 0); 
     } 
    }); 

    Button confirmButton = (Button) findViewById(R.id.confirm); 

    mRowId = (savedInstanceState == null) ? null : 
     (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID); 
    if (mRowId == null) { 
     Bundle extras = getIntent().getExtras(); 
     mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID) 
           : null; 
    } 

    populateFields(); 

    confirmButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      setResult(RESULT_OK); 
      finish(); 
     } 
    }); 
} 

private void populateFields() { 
    if (mRowId != null) { 
     Cursor note = mDbHelper.fetchNote(mRowId); 
     startManagingCursor(note); 
     mTitleText.setText(note.getString(
       note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE))); 
     mBodyText.setText(note.getString(
       note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY))); 
     mquantityint.setText(note.getString(
       note.getColumnIndexOrThrow(NotesDbAdapter.KEY_QUANTITY))); 
     mbarcodeint.setText(note.getString(
       note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BARCODE))); 
    } 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    saveState(); 
    outState.putSerializable(NotesDbAdapter.KEY_ROWID, mRowId); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    saveState(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    populateFields(); 
} 

private void saveState() { 
    String title = mTitleText.getText().toString(); 
    String body = mBodyText.getText().toString(); 
    int quantity =Integer.parseInt(mquantityint.getText().toString()); 
    int barcode =Integer.parseInt(mbarcodeint.getText().toString()); 
    if (mRowId == null) { 
     long id = mDbHelper.createNote(title, body, quantity, barcode); 
     if (id > 0) { 
      mRowId = id; 
     } 
    } else { 
     mDbHelper.updateNote(mRowId, title, body, quantity, barcode); 
    } 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    String contents =null; 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 0) 
    { 
     if (resultCode == RESULT_OK) 
     { 
      contents = data.getStringExtra("SCAN_RESULT"); 
      // String format = data.getStringExtra("SCAN_RESULT_FORMAT"); 
      //Variable set for QR scan result 
      EditText sbarcodeno = (EditText) findViewById(R.id.barcodeno); 
      //Variable set to display custom string above result 
      EditText Result =(EditText) findViewById(R.id.sbarcode); 
      //Displays actual 
      sbarcodeno.setText(contents); 
      //Edit string here  
      Result.setText(""); 
      // TO DO - Modify code so the result launches in another activity. 
     } 
     else if (resultCode == RESULT_CANCELED) 
     { 
      // Handle cancel 
     } 
    } 
} 
@Override 
public void onBackPressed() { 
    this.finish(); 
    return; 
} 
} 

logcat -

04-13 01:24:47.355: E/AndroidRuntime(2575): FATAL EXCEPTION: main 
04-13 01:24:47.355: E/AndroidRuntime(2575): java.lang.RuntimeException: Unable to pause activity {bhavik.smart.shopping/bhavik.smart.shopping.NoteEdit}: java.lang.NumberFormatException: Invalid int: "" 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2706) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2662) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2640) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.access$800(ActivityThread.java:123) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.os.Looper.loop(Looper.java:137) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at java.lang.reflect.Method.invoke(Method.java:511) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at dalvik.system.NativeStart.main(Native Method) 
04-13 01:24:47.355: E/AndroidRuntime(2575): Caused by: java.lang.NumberFormatException: Invalid int: "" 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at java.lang.Integer.invalidInt(Integer.java:138) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at java.lang.Integer.parseInt(Integer.java:359) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at java.lang.Integer.parseInt(Integer.java:332) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at bhavik.smart.shopping.NoteEdit.saveState(NoteEdit.java:138) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at bhavik.smart.shopping.NoteEdit.onPause(NoteEdit.java:126) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.Activity.performPause(Activity.java:4563) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1195) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2693) 
04-13 01:24:47.355: E/AndroidRuntime(2575):  ... 12 more 

Répondre

2

Vous obtenez une force de fermeture en raison des lignes

int quantity =Integer.parseInt(mquantityint.getText().toString()); 
int barcode =Integer.parseInt(mbarcodeint.getText().toString()); 

dans saveState(). L'un des TextView est vide lorsque vous appuyez sur le bouton de retour.

Avis cette ligne dans le journal des erreurs

java.lang.NumberFormatException: Invalid int: "" 

Ceci est jeté lorsque vous exécutez parseInt sur une chaîne non valide. Dans ce cas, il vous dit que la chaîne est vide. Vous devez vérifier que la chaîne n'est pas vide avant d'exécuter parseInt ou lancer une tentative de capture des méthodes.

Bonne chance.

0
Result.setText(""); 

de votre code, vous l'analysez à chaîne pour obtenir exception numberformat. Il suffit de cocher condtions simples avant de le convertir en entier comme ci-dessous ::

if(Result.getText()!="" ||Result.getText()!=null) 
int barcode =Integer.parseInt(mbarcodeint.getText().toString()); 
else 
int barcode =0; 

dans ce qui précède peut vous enlever une partie autre que [er vous besoin

Questions connexes