Почему эта сила закрывается до рисования экрана активности? (Андроид) - PullRequest
0 голосов
/ 30 июня 2010

мое приложение принудительно закрывается, прежде чем оно запустится ... eclipse не возвращает ошибок в моем коде, и мой xml хорош.Кто-нибудь может дать мне некоторое представление?

package com.mhe.test.scan;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button myScanButton = (Button) findViewById(R.id.myScanButton);         
          myScanButton.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
                startActivityForResult(intent, 0);

               }
            });
    }


    EditText totalbox = (EditText) findViewById(R.id.totalbox);
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            if (requestCode == 0) {
                if (resultCode == RESULT_OK) {
                    String contents = intent.getStringExtra("SCAN_RESULT");
                    // Handle successful scan
                    totalbox.setText(contents);
                } else if (resultCode == RESULT_CANCELED) {
                    // Handle cancel
                    totalbox.setText("@string/bummer");
                }



            }      
         }
    }

по сути, он должен вызывать сканер штрих-кода zxing для сканирования штрих-кода по нажатию кнопки и возврата результата в поле EditText ... я новичокна это ...

1 Ответ

1 голос
/ 30 июня 2010

Строка:

EditText totalbox = (EditText) findViewById(R.id.totalbox);

Нет в методе OnCreate, поэтому он пытается инициализировать totalbox перед созданием действия, что, вероятно, вызывает сбой

Попробуйте вместо этого:

package com.mhe.test.scan;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class main extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button myScanButton = (Button) findViewById(R.id.myScanButton); 
    // set the totalbox in the onCreate
    totalbox = (EditText) findViewById(R.id.totalbox);        
    myScanButton.setOnClickListener(new Button.OnClickListener() {
      public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
        startActivityForResult(intent, 0);
      }
    });
  }

  public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
      if (resultCode == RESULT_OK) {
        String contents = intent.getStringExtra("SCAN_RESULT");
        // Handle successful scan
        // check that it exists, just in case
        if ( totalbox != null )
          totalbox.setText(contents);
      } else if (resultCode == RESULT_CANCELED) {
        // Handle cancel
        // check that it exists, just in case
        if ( totalbox != null )
          totalbox.setText("@string/bummer");
      }
    }      
  }

  private EditText totalbox;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...