To preface, I am student and pretty new to Java/Programming. I am very new to the android framework. I want 5 dice ImageView's to cycle on a loop to appear like they are rolling. I believe the main issue I am having is that my UI changes are happening outside of onCreate(). Is there a way to bridge the MainActivity and a separate Java class?
MainActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button rollButton = (Button) findViewById(R.id.rollButton);
rollButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Thread die1 = new Thread((Runnable) new ShipDriver(0));
die1.start();
Separate Java Class
public class ShipDriver implements Runnable {
ImageView imageView;
ImageView imageView2;
ImageView imageView3;
ImageView imageView4;
ImageView imageView5;
int dieIndex;
int rolled;
Handler myHandlerObj;
Runnable runnable;
public static final Random RANDOM = new Random();
public ShipDriver(int tdieIndex) {
dieIndex = tdieIndex;
}
public void run() {
rolled = randomDiceValue();
Handler myHandlerObj = new Handler(Looper.getMainLooper());
for(int i=0; i<40; i++) {
try {
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
}
if (dieIndex == 0) {
myHandlerObj.post(new Runnable() {
@Override
public void run() {
switch (rolled) {
case 1:
imageView.setImageResource(R.drawable.die1);
case 2:
imageView.setImageResource(R.drawable.die2);
case 3:
imageView.setImageResource(R.drawable.die3);
case 4:
imageView.setImageResource(R.drawable.die4);
case 5:
imageView.setImageResource(R.drawable.die5);
case 6:
imageView.setImageResource(R.drawable.die6);
}
}
});
if (dieIndex == 1) {
myHandlerObj.post(new Runnable() {
@Override
public void run() {
switch (rolled) {
case 1:
imageView2.setImageResource(R.drawable.die1);
case 2:
imageView2.setImageResource(R.drawable.die2);
case 3:
imageView2.setImageResource(R.drawable.die3);
case 4:
imageView2.setImageResource(R.drawable.die4);
case 5:
imageView2.setImageResource(R.drawable.die5);
case 6:
imageView2.setImageResource(R.drawable.die6);
}
}
});
}
......
In logcat im getting this error:
attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
Im kinda at a loss with this. Any insight would be greatly appreciated.