Это мой первый пост в 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();
}
Ok. Я подумал об этом, но Integer.parseInt почему-то не работал правильно для меня. Я дам еще попытку – dkniffin
Хорошо. Я попробовал это. Я получил исключение с нулевым указателем. Я добавлю информацию к сообщению об этом – dkniffin
Из этого я еще не вижу, что происходит, но это не имеет ничего общего с Integer.parseInt. Ошибка в этой строке: final Spinner numPc = (Spinner) findViewById (R.id.opt_numpc); или следующей строки.Я не вижу, как вы получаете нулевой указатель в первой строке. – Kaediil