Android App OnClick Crashing



So i have a simple app, just a menu with a few buttons, when a button is clicked you are brought to a new page. The page has a button, which when clicked, keeps changing its background image until it runs out of images (list of image names stored in strings), then you are brought back to the main menu. I can do this twice, then on the third attempt, if i click a button on the menu the app crashes. This doesnt happen on the emulator, only when i run it on my phone. I dont know why this is happening


enter image description here



package com.example.otapp;

import com.example.otapp.R.raw;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.media.MediaPlayer;

public class MainActivity extends ActionBarActivity {

public static String DPExtension;//Holds the letters dp
public String list;
public static int Screen_Height;//holds screen height
public static int Screen_Width;//holds screen width
public Intent intent;
public MediaPlayer audio;

public final static String EXTRA_MESSAGE = "com.example.otapp.MESSAGE";

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//this code block is for getting the screen proportions
Display getdisplay = getWindowManager().getDefaultDisplay();
DisplayMetrics dispMetrics = new DisplayMetrics();
getdisplay.getMetrics(dispMetrics);

float densitydp = getResources().getDisplayMetrics().density;

float ScreenHeightdp = dispMetrics.heightPixels / densitydp;
float ScreenWidthdp = dispMetrics.widthPixels / densitydp;

//Below dimension value holders do not use pixel density
float ScreenHeightCheck = dispMetrics.heightPixels;
float ScreenWidthCheck = dispMetrics.heightPixels;

DPExtension = "dp";

Screen_Height = (int) ScreenHeightCheck;

Screen_Width = (int) ScreenWidthCheck;

//The printlns are so I can discern the outputs in LogCat
//System.out.println("Screen Height:" + Screen_Height);
//System.out.println("Screen Width:" + Screen_Width);

View Button1 = findViewById(R.id.Button01);
LinearLayout.LayoutParams params = (LayoutParams) Button1.getLayoutParams();
params.height = Screen_Height/3;
Button1.setLayoutParams(params);

View Button2 = findViewById(R.id.Button02);
Button2.setLayoutParams(params);

View Button3 = findViewById(R.id.Button03);
Button3.setLayoutParams(params);

View Button4 = findViewById(R.id.Button04);
Button4.setLayoutParams(params);

Button1.setOnClickListener(onClickListener);
Button2.setOnClickListener(onClickListener);
Button3.setOnClickListener(onClickListener);
Button4.setOnClickListener(onClickListener);

Button1.setBackgroundResource(getResources().getIdentifier("gettingup", "drawable", getPackageName()));

intent = new Intent(this, DisplayMessageActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

audio = MediaPlayer.create(MainActivity.this, raw.buttonsound);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);
return true;
}

private OnClickListener onClickListener = new OnClickListener() {

@Override
public void onClick(View v) {

// play sound
audio.start();

// do different things for each different button
switch(v.getId()) {
case R.id.Button01:

list = "Get Up";

intent.putExtra(EXTRA_MESSAGE, list);

startActivity(intent);

break;
case R.id.Button02:

list = "Get Dressed";

intent.putExtra(EXTRA_MESSAGE, list);

startActivity(intent);

break;
case R.id.Button03:

list = "Get Dressed";

intent.putExtra(EXTRA_MESSAGE, list);

startActivity(intent);

break;
case R.id.Button04:

list = "Get Dressed";

intent.putExtra(EXTRA_MESSAGE, list);

startActivity(intent);

break;
}
}
};

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

<ScrollView xmlns:android="http://ift.tt/nIICcg"
android:layout_width="match_parent" android:layout_height="match_parent" android:background="#1E90FF">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<Button
android:id="@+id/Button01"
android:layout_width="match_parent"
android:layout_height="125dp"
android:text="@string/button_send"/>

<Button
android:id="@+id/Button03"
android:layout_width="match_parent"
android:layout_height="125dp"
android:text="@string/button2_send" />

<Button
android:id="@+id/Button04"
android:layout_width="match_parent"
android:layout_height="125dp"
android:text="@string/button3_send" />

<Button
android:id="@+id/Button02"
android:layout_width="match_parent"
android:layout_height="125dp"
android:text="@string/button4_send" />

</LinearLayout>

</ScrollView>

No comments:

Post a Comment