Note that there are some explanatory texts on larger screens.

plurals
  1. POEclipse NullPointerException I can't seem to fix
    primarykey
    data
    text
    <p>I am working on porting over a Java Maze application into Android. What this means is that I am taking the Java code given to me (I did not write this part), rewriting some of the classes (i.e. Changing the Java graphics into Android graphics so that it works on Android, and I have created the Android UI activities already. </p> <p>My problem is this...from what I understand the maze is built with a 'buildthread'. I am attempting to intervene during the maze building process thread (buildthread) to update a progress bar on my Generating Activity. But when I declare my Generating Activity in my Mazebuilder Class and then use my "generating activity" variable (GA) to try and send back the updated progress number to my android UI class it throws a nullpointerexpection. </p> <p>I'm pretty sure I declared the variable in the code below and initialized it. </p> <pre><code> public GeneratingActivity GA; /** * Constructor for a randomized maze generation */ public MazeBuilder(){ random = new Random(); } public MazeBuilder(GeneratingActivity activity){ random = new Random(); GA = activity ; } </code></pre> <p>The error is thrown here (GA.increaseprogress(...)): </p> <pre><code>private Seg findPartitionCandidate(Vector&lt;Seg&gt; sl) { Seg pe = null ; int bestgrade = 5000; // used to compute the minimum of all observed grade values, set to some high initial value int maxtries = 50; // constant, only used to determine skip // consider a subset of segments proportional to the number of tries, here 50, seems to randomize the access a bit int skip = (sl.size() / maxtries); if (skip == 0) skip = 1; for (int i = 0; i &lt; sl.size(); i += skip) { Seg pk = (Seg) sl.elementAt(i); if (pk.partition) continue; partiters++; if ((partiters &amp; 31) == 0) { // During maze generation, the most time consuming part needs to occasionally update the current screen // if (GA.increaseProgress(partiters*100/expected_partiters)) { // give main thread a chance to process keyboard events try { Thread.currentThread().sleep(10); } catch (Exception e) { } } } int grade = grade_partition(sl, pk); if (grade &lt; bestgrade) { bestgrade = grade; pe = pk; // determine segment with smallest grade } } return pe; } </code></pre> <p>This is my Generating Activity android Class that starts the mazebuilding process and has the increaseprogress method: </p> <pre><code>package edu.wm.cs.cs301.KatzAMaze; public class GeneratingActivity extends Activity { private ProgressBar progressBar1; private int progressBarStatus = 0; public MazeBuilder mazeBuilder; public Maze maze; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_generating); progressBar1 = (ProgressBar) findViewById(R.id.progressBar1); Intent intent = getIntent(); int mazeDifficulty = intent.getIntExtra("difficulty", 0); String mazeAlgorithm = intent.getStringExtra("algorithm"); if (mazeAlgorithm == "Prim's"){ mazeBuilder = new MazeBuilderPrim(); mazeBuilder.build(maze, mazeBuilder.skill_x[mazeDifficulty], mazeBuilder.skill_y[mazeDifficulty], mazeBuilder.skill_rooms[mazeDifficulty], mazeBuilder.skill_partct[mazeDifficulty]); // changed THIS to maze } else { mazeBuilder = new MazeBuilder(); mazeBuilder.build(maze, mazeBuilder.skill_x[mazeDifficulty], mazeBuilder.skill_y[mazeDifficulty], mazeBuilder.skill_rooms[mazeDifficulty], mazeBuilder.skill_partct[mazeDifficulty]); // changed THIS to maze } } public boolean increaseProgress(int percentage){ progressBar1.setProgress(percentage); return true ; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_generating, menu); return true; } // Configures the Back button to bring the user to the Title Screen public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK &amp;&amp; event.getRepeatCount() == 0) { Toast.makeText(this, "Going back to Title Screen", Toast.LENGTH_SHORT).show(); Log.i("GeneratingActivity", "You have selected to return to the Title Screen"); } return super.onKeyDown(keyCode, event); } public void finishGenerating (View view) { Button generatingButton = (Button) findViewById(R.id.button1); generatingButton.isClickable(); switch(view.getId()) { case R.id.button1: if (generatingButton.isPressed()) { Toast.makeText(this, "You have selected to Play", Toast.LENGTH_SHORT).show(); Log.i("GeneratingActivity", "You have selected to Play"); } break; } Intent intent = new Intent(this, PlayActivity.class); startActivity(intent); } } </code></pre> <p>Thanks for any help.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload