Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Android Build a Simple Android App (retired 2014) Learning the Language Simple Refactoring

unfortunately crystal ball has stopped.

When im run the ADV I keep getting a error saying unfortunately crystal Ball has stopped I haven't found a error in my code though not sure what to do here.

7 Answers

Tyler Miller
seal-mask
.a{fill-rule:evenodd;}techdegree
Tyler Miller
iOS Development Techdegree Student 8,299 Points
// The button was clicked, so update the answer label with an answer
            String answer = "";
            // Randomly select one of three answers: Yes, No, or Maybe
            Random randomGenerator = new Random(); // Construct a new Random number generator
            int randomNumber = randomGenerator.nextInt(answer.length());

Your issue is that you are passing answer.length() when it should be answers.length()

Currently you are passing a String by the name of answer to n data collection method. Hope this helps, remember to double check your spelling!

Matheus G Oliveira
Matheus G Oliveira
9,682 Points

Hey Tiffanie,

Please remember to post the code you are having problems so we can have a look on it. With the descriptions you gave its almost imposible to find an issue.

Just as a reminder, having errors saying "Unfortunately ... has stopped" is normal for us programmers and means that something went wrong with the code so we have to have a look on it.

;)

package com.example.crystalball;

import java.util.Random;

import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Declare our View variables and assign them the Views from layout file 
    final TextView answerLabel = (TextView) findViewById(R.id.textView1);
    Button getAnswerButton = (Button) findViewById(R.id.button1);

    getAnswerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            String[] answers = {
                    "It is certain",
                    "It is decidedly so",
                    "All signs say Yes",
                    "The stars are not aligned",
                    "My reply is no",
                    "It is doubtful",
                    "Better not tell you now",
                    "concentrate and ask again",
                    "unable to answer now",};
            // The button was clicked, so update the answer label with an answer
            String answer = "";
            // Randomly select one of three answers: Yes, No, or Maybe
            Random randomGenerator = new Random(); // Construct a new Random number generator
            int randomNumber = randomGenerator.nextInt(answer.length());

            /*
             * 0 = Yes
             * 1 = No
             * 3 = Maybe
             */

            answer = answers[randomNumber];

            //Update the label with our dynamic answer
            answerLabel.setText(answer);

        }
    });
 }



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

Thanks sorry about that....

package com.example.crystalball;

import java.util.Random;

import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Declare our View variables and assign them the Views from layout file 
    final TextView answerLabel = (TextView) findViewById(R.id.textView1);
    Button getAnswerButton = (Button) findViewById(R.id.button1);

    getAnswerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            String[] answers = {
                    "It is certain",
                    "It is decidedly so",
                    "All signs say Yes",
                    "The stars are not aligned",
                    "My reply is no",
                    "It is doubtful",
                    "Better not tell you now",
                    "concentrate and ask again",
                    "unable to answer now",};
            // The button was clicked, so update the answer label with an answer
            String answer = "";
            // Randomly select one of three answers: Yes, No, or Maybe
            Random randomGenerator = new Random(); // Construct a new Random number generator
            int randomNumber = randomGenerator.nextInt(answer.length());

            /*
             * 0 = Yes
             * 1 = No
             * 3 = Maybe
             */

            answer = answers[randomNumber];

            //Update the label with our dynamic answer
            answerLabel.setText(answer);

        }
    });
 }



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

}

So what's happening is it load I click the button and I get the code error say it shut down.

OMG.. Your right I keep forgetting the s on the end of answer but the system didn't catch it either thank you.

That was the problem thank you so much.