B
Bacianthos
Neues Mitglied
- 0
Hallo Miteinander
Ich bin relativ neu in der Android App Entwickler Szene. Ich habe mir ein Buch zugelegt um das Ganze zu lernen. Jetzt bin ich mit der eigenen App dran, ich möchte das Spielprinzip Breakout programmieren.
Grundsätzlich verwendet meine Übungsapp den "gleichen" Code wie ich ihn hier habe, doch irgendetwas möchte noch nicht richtig funktionieren. Ich konnte den Fehler lokalisieren. Und zwar befindet er sich in den Zeilen mit:
NameInput = (LinearLayout) findViewById(R.id.NameInput);
Save = (Button) findViewById(R.id.Save);
Save.setOnClickListener(this);
NameInput.setVisibility(View.INVISIBLE);
Wenn ich das ausmaskiere, funktioniert das ganze ohne Absturz. Aber ich habe das Spiel (Gameplay) noch nicht programmiert und somit kann ich meinen Highscore nicht testen (Code habe ich wie oben beschrieben schon in der Probeapp verwendet und hat geklappt). Aber ich brauche diesen Codeteil ja auch in der Übungsapp. Mir ist es unverständlich warum ich einen Fehler bekomme. Den ganzen Codeauszug in voller Länge im folgenden Teil:
package com.example.breakoutapp;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class menu extends Activity implements OnClickListener {
private LinearLayout NameInput;
private Button Save;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
Button Start = (Button) findViewById(R.id.start);
Start.setOnClickListener(this);
Button Einstellungen = (Button) findViewById(R.id.einstellungen);
Einstellungen.setOnClickListener(this);
Button Highscore = (Button) findViewById(R.id.highscore);
Highscore.setOnClickListener(this);
NameInput = (LinearLayout) findViewById(R.id.NameInput);
Save = (Button) findViewById(R.id.Save);
Save.setOnClickListener(this);
NameInput.setVisibility(View.INVISIBLE);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
setContentView(R.layout.activity_level);
startActivityForResult(new Intent(this,Game.class),1);
break;
case R.id.einstellungen:
setContentView(R.layout.activity_einstellungen);
//Funktionsrumpf
break;
case R.id.highscore:
setContentView(R.layout.activity_highscore);
break;
case R.id.Save:
HighscoreNameWrite();
HighscoreShow();
NameInput.setVisibility(View.VISIBLE);
break;
}
}
@Override
protected void onResume(){
super.onResume();
HighscoreShow();
TextView tv = (TextView) findViewById(R.id.highscore);
tv.setText(Integer.toString(HighscoreRead()));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1) {
if(resultCode > HighscoreRead()) {
HighscoreWrite(resultCode);
NameInput.setVisibility(View.VISIBLE);
}
}
}
private void HighscoreShow(){
TextView tv = (TextView) findViewById(R.id.highscore);
int highscore = HighscoreRead();
if(highscore>0){
tv.setText(Integer.toString(highscore) + " von " + HighscoreNameRead());
}
else{
tv.setText("-");
}
}
private int HighscoreRead() {
SharedPreferences pref = getSharedPreferences("GAME", 0);
return pref.getInt("Highscore", 0);
}
private String HighscoreNameRead() {
SharedPreferences pref = getSharedPreferences("GAME", 0);
return pref.getString("HIGHSCORE_NAME", "");
}
private void HighscoreWrite(int highscore) {
SharedPreferences pref = getSharedPreferences("GAME", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("Highscore", highscore);
editor.commit();
}
private void HighscoreNameWrite() {
TextView tv = (TextView) findViewById(R.id.PlayerName);
String name = tv.getText().toString().trim();
SharedPreferences pref = getSharedPreferences("GAME", 0);
SharedPreferences.Editor editor = pref.edit();editor.putString("HIGHSCORE_NAME", name);
editor.commit();
}
}
Ich bin relativ neu in der Android App Entwickler Szene. Ich habe mir ein Buch zugelegt um das Ganze zu lernen. Jetzt bin ich mit der eigenen App dran, ich möchte das Spielprinzip Breakout programmieren.
Grundsätzlich verwendet meine Übungsapp den "gleichen" Code wie ich ihn hier habe, doch irgendetwas möchte noch nicht richtig funktionieren. Ich konnte den Fehler lokalisieren. Und zwar befindet er sich in den Zeilen mit:
NameInput = (LinearLayout) findViewById(R.id.NameInput);
Save = (Button) findViewById(R.id.Save);
Save.setOnClickListener(this);
NameInput.setVisibility(View.INVISIBLE);
Wenn ich das ausmaskiere, funktioniert das ganze ohne Absturz. Aber ich habe das Spiel (Gameplay) noch nicht programmiert und somit kann ich meinen Highscore nicht testen (Code habe ich wie oben beschrieben schon in der Probeapp verwendet und hat geklappt). Aber ich brauche diesen Codeteil ja auch in der Übungsapp. Mir ist es unverständlich warum ich einen Fehler bekomme. Den ganzen Codeauszug in voller Länge im folgenden Teil:
package com.example.breakoutapp;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class menu extends Activity implements OnClickListener {
private LinearLayout NameInput;
private Button Save;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
Button Start = (Button) findViewById(R.id.start);
Start.setOnClickListener(this);
Button Einstellungen = (Button) findViewById(R.id.einstellungen);
Einstellungen.setOnClickListener(this);
Button Highscore = (Button) findViewById(R.id.highscore);
Highscore.setOnClickListener(this);
NameInput = (LinearLayout) findViewById(R.id.NameInput);
Save = (Button) findViewById(R.id.Save);
Save.setOnClickListener(this);
NameInput.setVisibility(View.INVISIBLE);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
setContentView(R.layout.activity_level);
startActivityForResult(new Intent(this,Game.class),1);
break;
case R.id.einstellungen:
setContentView(R.layout.activity_einstellungen);
//Funktionsrumpf
break;
case R.id.highscore:
setContentView(R.layout.activity_highscore);
break;
case R.id.Save:
HighscoreNameWrite();
HighscoreShow();
NameInput.setVisibility(View.VISIBLE);
break;
}
}
@Override
protected void onResume(){
super.onResume();
HighscoreShow();
TextView tv = (TextView) findViewById(R.id.highscore);
tv.setText(Integer.toString(HighscoreRead()));
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1) {
if(resultCode > HighscoreRead()) {
HighscoreWrite(resultCode);
NameInput.setVisibility(View.VISIBLE);
}
}
}
private void HighscoreShow(){
TextView tv = (TextView) findViewById(R.id.highscore);
int highscore = HighscoreRead();
if(highscore>0){
tv.setText(Integer.toString(highscore) + " von " + HighscoreNameRead());
}
else{
tv.setText("-");
}
}
private int HighscoreRead() {
SharedPreferences pref = getSharedPreferences("GAME", 0);
return pref.getInt("Highscore", 0);
}
private String HighscoreNameRead() {
SharedPreferences pref = getSharedPreferences("GAME", 0);
return pref.getString("HIGHSCORE_NAME", "");
}
private void HighscoreWrite(int highscore) {
SharedPreferences pref = getSharedPreferences("GAME", 0);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("Highscore", highscore);
editor.commit();
}
private void HighscoreNameWrite() {
TextView tv = (TextView) findViewById(R.id.PlayerName);
String name = tv.getText().toString().trim();
SharedPreferences pref = getSharedPreferences("GAME", 0);
SharedPreferences.Editor editor = pref.edit();editor.putString("HIGHSCORE_NAME", name);
editor.commit();
}
}