2012-02-10 5 views
0

Это мой первый пост в stackoverflow, поэтому не стесняйтесь, дайте мне знать, если я что-то сделаю неправильно.Набор предустановленных номеров для android

Я работаю над созданием приложения для Android. Для одного из моих действий в меню мне нужен какой-то виджет, который позволит пользователю выбрать номер из предопределенного набора. (то есть: {50, 100, 200, 500, 1000, 2000})

Я посмотрел на Виджеты Spinner, SeekBar и NumberPicker, и вот проблемы, которые я нашел с каждым.

  • Spinner, кажется, допускает только строки.
  • SeekBar и NumberPicker, похоже, легко не позволяют предустановленные значения.

Будет ли любой из этих виджетов работать на то, что я пытаюсь сделать? Если нет, есть ли другой виджет, который может работать лучше? Если нет, то как бы вы порекомендовали я об этом?

Спасибо!

Edit:

Я попытался с помощью кок и функции Integer.parseInt. Я получил исключения нулевого указателя:

02-11 18:21:23.823: E/AndroidRuntime(359): Caused by: java.lang.NullPointerException 
02-11 18:21:23.823: E/AndroidRuntime(359): at com.Package.Jigsaw.PuzzleActivity.onCreate(PuzzleActivity.java:20) 

Line 20 из PuzzleActivity является тот, в котором я объявляю numPc.

Вот соответствующие биты кода:

Меню активность:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_puzzle); 

    //final Gallery gal = (Gallery) findViewById(R.id.opt_img); 

    final Spinner numPc = (Spinner) findViewById(R.id.opt_numpc); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
      this, R.array.opt_numpc_options, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    numPc.setAdapter(adapter); 

...snip... 

     Button start_btn = (Button) findViewById(R.id.start_puzzle_btn); 
    start_btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      Intent i = new Intent("us.kniffin.Jigsaw.OPENPUZZLE"); 
      //i.putExtra("img", gal.getSelectedItem()); 
      //i.putExtra("numPc", numPc.getSelectedItem()); 
      i.putExtra("numPc", Integer.parseInt(numPc.getSelectedItem().toString())); 
      //i.putExtra("rot", rot.getSelectedItem().toString()); 
      //i.putExtra("connType", connType.getSelectedItem().toString()); 
      startActivity(i); 

     } 
    }); 

Основная деятельность (PuzzleActivity):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    final PuzzleView v; 
    Dimension numPcXY; 

    // TODO: update this line to read in options 
    int numPc = (Integer) savedInstanceState.get("numPc"); 

    // TODO: update this line to read in options 
    picture = BitmapFactory.decodeResource(getResources(), R.drawable.test_pic); 
    picture = Bitmap.createScaledBitmap(picture, picture.getWidth()/3, picture.getHeight()/3, false); 

    // Do some math to do a case statement to determine numPcX and numPcY 
    numPcXY = calcXYpieces(numPc, picture); 

    // Create the puzzle 
    pieces = new PuzzlePieceSet(picture, numPcXY.getX(), numPcXY.getY()); 

    v = new PuzzleView(this, pieces); 
    setContentView(v); 

    pieces.scramble(); 
} 

ответ

0

Я понял свою проблему.

Проблема заключается в этой строке:

int numPc = (Integer) savedInstanceState.get("numPc"); 

я должен использовать что-то вроде этого:

Bundle extras = getIntent().getExtras(); 
int numPc = (Integer) extras.get("numPc"); 
2

лично я хотел бы использовать Spinner, а затем вызовите Integer.parseInt на результат, чтобы получить int, в котором вы нуждаетесь.

Хорошо, теперь с большим количеством вашего кода, пожалуйста, посмотрите на этот ответ (который использует String, но это то же самое для Integer), вы используете материал putExtra неправильно.

Для получения дополнительной информации см. How to use putExtra() and getExtra() for string data.

+0

Ok. Я подумал об этом, но Integer.parseInt почему-то не работал правильно для меня. Я дам еще попытку – dkniffin

+0

Хорошо. Я попробовал это. Я получил исключение с нулевым указателем. Я добавлю информацию к сообщению об этом – dkniffin

+0

Из этого я еще не вижу, что происходит, но это не имеет ничего общего с Integer.parseInt. Ошибка в этой строке: final Spinner numPc = (Spinner) findViewById (R.id.opt_numpc); или следующей строки.Я не вижу, как вы получаете нулевой указатель в первой строке. – Kaediil

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