Tuesday 14 November 2017

java - "Unfortunately 'app' has stopped" error

The idea is to launch a game when the alarm
starts. I have shown the Manifest.xml below. Please correct me if i had made an error.
Since I am new to Android, I am not able to figure it out.
PS: i have
searched other similar questions and corrected many other errors, but still the problem
persists.



This is the alarm code I got from a
tutorial (AndroidTimeActivity):




public class
AndroidTimeActivity extends Activity {

TimePicker
myTimePicker;
Button buttonstartSetDialog;
TextView
textAlarmPrompt;

TimePickerDialog
timePickerDialog;

final static int RQS_1 =
1;


@Override
public void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

textAlarmPrompt =
(TextView)findViewById(R.id.alarmprompt);

buttonstartSetDialog =
(Button)findViewById(R.id.startSetDialog);

buttonstartSetDialog.setOnClickListener(new
OnClickListener(){


public void onClick(View v)
{
textAlarmPrompt.setText("");

openTimePickerDialog(false);


}});

}


private void
openTimePickerDialog(boolean is24r){

Calendar calendar =
Calendar.getInstance();

timePickerDialog = new
TimePickerDialog(
AndroidTimeActivity.this,
onTimeSetListener,

calendar.get(Calendar.HOUR_OF_DAY),

calendar.get(Calendar.MINUTE),
is24r);

timePickerDialog.setTitle("Set Alarm Time");



timePickerDialog.show();

}

OnTimeSetListener
onTimeSetListener= new OnTimeSetListener(){


public void
onTimeSet(TimePicker view, int hourOfDay, int minute) {

Calendar
calNow = Calendar.getInstance();

Calendar calSet = (Calendar)
calNow.clone();

calSet.set(Calendar.HOUR_OF_DAY,
hourOfDay);
calSet.set(Calendar.MINUTE, minute);

calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND,
0);

if(calSet.compareTo(calNow) <= 0){
//Today Set
time passed, count to tomorrow
calSet.add(Calendar.DATE,
1);

}

setAlarm(calSet);

}};

private void setAlarm(Calendar
targetCal){

textAlarmPrompt.setText(

"\n\n***\n"
+ "Alarm is set@ " + targetCal.getTime() +
"\n"

+ "***\n");

Intent intent = new
Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(getBaseContext(),RQS_1,
intent, 0);

AlarmManager alarmManager =
(AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,
targetCal.getTimeInMillis(),
pendingIntent);


}



}


This
is the AlarmReceiver class:




public class AlarmReceiver extends BroadcastReceiver
{

@Override

public void onReceive(Context
context, Intent arg1) {
Intent activityIntent = new Intent(context,
Manager.class);

activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(activityIntent);

}


}



and here
is the Manager class which I want to call when the intent is received by the alarm
receiver:



 public class Manager
extends Activity {
private static int ROW_COUNT = -1;
private
static int COL_COUNT = -1;
private Context context;
private
Drawable backImage;
private int [] [] cards;
private
List images;
private Card firstCard;


private Card seconedCard;
private ButtonListener
buttonListener;

private static Object lock = new
Object();

int turns;
private TableLayout
mainTable;
private UpdateCardsHandler handler;


@Override

public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);



handler
= new UpdateCardsHandler();
loadImages();

setContentView(R.layout.main);



backImage =
getResources().getDrawable(R.drawable.icon);

/*

((Button)findViewById(R.id.ButtonNew)).setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View v) {

newGame();

}




});*/

buttonListener = new ButtonListener();


mainTable =
(TableLayout)findViewById(R.id.TableLayout03);


context
= mainTable.getContext();


Spinner s = (Spinner)
findViewById(R.id.Spinner01);
ArrayAdapter adapter =
ArrayAdapter.createFromResource(this, R.array.type,

android.R.layout.simple_spinner_item);


adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s.setAdapter(adapter);

s.setOnItemSelectedListener(new
OnItemSelectedListener(){


public void
onItemSelected(
android.widget.AdapterView arg0,
View
arg1, int pos, long arg3){

((Spinner)
findViewById(R.id.Spinner01)).setSelection(0);

int
x,y;

switch (pos) {
case 1:


x=4;y=4;
break;
case 2:
x=4;y=5;

break;
case 3:
x=4;y=6;
break;
case
4:
x=5;y=6;

break;
case 5:

x=6;y=6;
break;
default:
return;

}
newGame(x,y);


}




public void
onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method
stub

}

});

}


private void newGame(int c, int r) {

ROW_COUNT = r;
COL_COUNT = c;

cards = new int
[COL_COUNT] [ROW_COUNT];



mainTable.removeView(findViewById(R.id.TableRow01));

mainTable.removeView(findViewById(R.id.TableRow02));



TableRow tr = ((TableRow)findViewById(R.id.TableRow03));

tr.removeAllViews();

mainTable = new
TableLayout(context);
tr.addView(mainTable);

for (int y
= 0; y < ROW_COUNT; y++) {
mainTable.addView(createRow(y));

}


firstCard=null;

loadCards();

turns=0;

((TextView)findViewById(R.id.tv1)).setText("Tries:
"+turns);


}


private
void loadImages() {
images = new
ArrayList();


images.add(getResources().getDrawable(R.drawable.card1));

images.add(getResources().getDrawable(R.drawable.card2));

images.add(getResources().getDrawable(R.drawable.card3));

images.add(getResources().getDrawable(R.drawable.card4));

images.add(getResources().getDrawable(R.drawable.card5));

images.add(getResources().getDrawable(R.drawable.card6));

images.add(getResources().getDrawable(R.drawable.card7));


images.add(getResources().getDrawable(R.drawable.card8));

images.add(getResources().getDrawable(R.drawable.card9));

images.add(getResources().getDrawable(R.drawable.card10));

images.add(getResources().getDrawable(R.drawable.card11));

images.add(getResources().getDrawable(R.drawable.card12));

images.add(getResources().getDrawable(R.drawable.card13));

images.add(getResources().getDrawable(R.drawable.card14));

images.add(getResources().getDrawable(R.drawable.card15));

images.add(getResources().getDrawable(R.drawable.card16));

images.add(getResources().getDrawable(R.drawable.card17));


images.add(getResources().getDrawable(R.drawable.card18));

images.add(getResources().getDrawable(R.drawable.card19));

images.add(getResources().getDrawable(R.drawable.card20));

images.add(getResources().getDrawable(R.drawable.card21));


}

private void loadCards(){
try{
int size =
ROW_COUNT*COL_COUNT;


Log.i("loadCards()","size=" +
size);

ArrayList list = new
ArrayList();

for(int i=0;i
list.add(new Integer(i));
}




Random r = new Random();

for(int i=size-1;i>=0;i--){

int t=0;

if(i>0){
t = r.nextInt(i);

}

t=list.remove(t).intValue();


cards[i%COL_COUNT][i/COL_COUNT]=t%(size/2);

Log.i("loadCards()",
"card["+(i%COL_COUNT)+"]["+(i/COL_COUNT)+"]="+

cards[i%COL_COUNT][i/COL_COUNT]);
}
}
catch (Exception
e) {
Log.e("loadCards()", e+"");

}


}

private TableRow
createRow(int y){
TableRow row = new TableRow(context);

row.setHorizontalGravity(Gravity.CENTER);

for (int x = 0; x <
COL_COUNT; x++) {
row.addView(createImageButton(x,y));

}
return row;

}

private View
createImageButton(int x, int y){
Button button = new
Button(context);
button.setBackgroundDrawable(backImage);

button.setId(100*x+y);
button.setOnClickListener(buttonListener);

return button;
}


class ButtonListener
implements OnClickListener {


public void onClick(View
v) {

synchronized (lock) {
if(firstCard!=null
&& seconedCard != null){
return;
}
int id =
v.getId();

int x = id/100;
int y = id%100;

turnCard((Button)v,x,y);
}

}


private void turnCard(Button button,int x, int y) {

button.setBackgroundDrawable(images.get(cards[x][y]));



if(firstCard==null){
firstCard = new Card(button,x,y);

}
else{

if(firstCard.x == x && firstCard.y ==
y){
return; //the user pressed the same card

}

seconedCard = new
Card(button,x,y);


turns++;

((TextView)findViewById(R.id.tv1)).setText("Tries:
"+turns);


TimerTask tt = new TimerTask()
{

@Override
public void run() {

try{

synchronized (lock) {

handler.sendEmptyMessage(0);
}
}
catch (Exception e)
{
Log.e("E1", e.getMessage());
}
}

};


Timer t = new Timer(false);

t.schedule(tt, 1300);
}



}

}

class UpdateCardsHandler extends
Handler{


@Override
public void
handleMessage(Message msg) {
synchronized (lock) {

checkCards();
}
}
public void checkCards(){

if(cards[seconedCard.x][seconedCard.y] == cards[firstCard.x][firstCard.y]){

firstCard.button.setVisibility(View.INVISIBLE);


seconedCard.button.setVisibility(View.INVISIBLE);
}
else
{
seconedCard.button.setBackgroundDrawable(backImage);

firstCard.button.setBackgroundDrawable(backImage);
}


firstCard=null;
seconedCard=null;
}


}





}


And here is my
manifest, i did create an activity for Manager class, But the "AndroidTime has
stopped"
error still
persists.




            version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.exercise.AndroidTime"
android:versionCode="1"
android:versionName="1.0"
>

/>


android:icon="@drawable/ic_launcher"


android:label="@string/app_name" >

android:name="com.exercise.AndroidTime.AndroidTimeActivity"

android:label="@string/app_name" >










android:name=".AlarmReceiver" android:process=":remote" />
android:name="com.exercise.AndroidTime.Manager">





Thank
you for your help.

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...