0

This is my first post on stackoverflow, so feel free let me know if I'm doing anything wrong.

I'm working on making an android app. For one of my menu activity's I need some sort of widget that will allow the user to pick a number from a predefined set. (ie: {50, 100, 200, 500, 1000, 2000})

I looked at the Spinner, SeekBar, and NumberPicker Widgets, and here's the problems I've found with each.

  • The Spinner seems to only allow strings.
  • The SeekBar and NumberPicker don't seem to easily allow preset values.

Would any of these widgets work for what I'm trying to do? If not, is there another widget that might work better? If not, then how would you recommend I go about this?

Thanks!

Edit:

I tried using a spinner and the Integer.parseInt function. I got a null pointer exception:

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 of PuzzleActivity is the one where I'm declaring numPc.

Here's the relevant bits of code:

Menu Activity:

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);

        }
    });

Main Activity (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();
}
dkniffin
  • 1,295
  • 16
  • 25

2 Answers2

2

I personally would use a Spinner and then call Integer.parseInt on the result to get the int you need.

Ok, now with more of your code, please look at this answer (which uses a String, but it is the same for an Integer), you are using the putExtra stuff incorrectly.

See How to use putExtra() and getExtra() for string data for more information.

Community
  • 1
  • 1
Kaediil
  • 5,465
  • 2
  • 21
  • 20
  • Ok. I did think of that, but Integer.parseInt wasn't working correctly for me for some reason. I'll give it another try – dkniffin Feb 10 '12 at 23:28
  • Ok. I tried that. I got a null pointer exception. I'll add info to the post about it – dkniffin Feb 12 '12 at 01:22
  • From that I can't see yet what is going on, but it has nothing to do with Integer.parseInt. Is the error on this line: final Spinner numPc = (Spinner) findViewById(R.id.opt_numpc); or the next line. I can't see how you are getting a null pointer on the first line. – Kaediil Feb 13 '12 at 15:13
  • No. the error is in the second section of code. This line: ` int numPc = (Integer) savedInstanceState.get("numPc"); ` – dkniffin Feb 13 '12 at 17:08
0

I figured out my issue.

The problem lies in this line:

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

I should be using something like this:

Bundle extras = getIntent().getExtras();
int numPc = (Integer) extras.get("numPc");
dkniffin
  • 1,295
  • 16
  • 25