0

这是我在 stackoverflow 上的第一篇文章,如果我做错了什么,请随时告诉我。

我正在制作一个android应用程序。对于我的菜单活动之一,我需要某种小部件,允许用户从预定义的集合中选择一个数字。(即:{50、100、200、500、1000、2000})

我查看了 Spinner、SeekBar 和 NumberPicker Widgets,这是我发现的每个问题。

  • Spinner 似乎只允许使用字符串。
  • SeekBar 和 NumberPicker 似乎不容易允许预设值。

这些小部件中的任何一个都适用于我想要做的事情吗?如果没有,是否还有其他可能更好的小部件?如果没有,那么你会如何建议我这样做?

谢谢!

编辑:

我尝试使用微调器和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)

PuzzleActivity 的第 20 行是我声明 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();
}
4

2 回答 2

2

我个人会使用 Spinner,然后在结果上调用 Integer.parseInt 以获得所需的 int。

好的,现在有了更多代码,请查看这个答案(它使用字符串,但整数相同),您错误地使用了 putExtra 内容。

有关详细信息,请参阅如何将 putExtra() 和 getExtra() 用于字符串数据

于 2012-02-10T21:01:10.193 回答
0

我想出了我的问题。

问题出在这一行:

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

我应该使用这样的东西:

Bundle extras = getIntent().getExtras();
int numPc = (Integer) extras.get("numPc");
于 2012-02-13T20:20:24.810 回答