Android settext从其他类获得高分
我正在创建一个具有高分的游戏,但我的问题是我无法通过levelcomplete.class的按钮将settext设置到我的highscore.class中。我的观点是,如果我的highscore(按钮)是从我的levelcomplete.class单击的,它将在我的highscore.class上自动显示一个textview settextAndroid settext从其他类获得高分,android,class,button,save,settext,Android,Class,Button,Save,Settext,我正在创建一个具有高分的游戏,但我的问题是我无法通过levelcomplete.class的按钮将settext设置到我的highscore.class中。我的观点是,如果我的highscore(按钮)是从我的levelcomplete.class单击的,它将在我的highscore.class上自动显示一个textview settext public class highscore extends Activity { TextView score; Button back; @Overri
public class highscore extends Activity {
TextView score;
Button back;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.highscore);
score = (TextView) findViewById(R.id.score);
int highestScore = -1;
//Now use this score variable to set anywhere.
Bundle extras = getIntent().getExtras();
if (extras != null) {
highestScore = extras.getInt("score");
}
back = (Button) findViewById(R.id.btn_back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Back",
Toast.LENGTH_SHORT).show();
}
});
// TODO Auto-generated method stub
}
}
我的解释流程levelcomplete.class=highscore(按钮)=highscore.class=settext 10/10
就像把你的分数保存到高分一样
levelcomplete.class
public class levelcomplete extends Activity {
Button highscore;
int highestScore;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// TODO Auto-generated method stub
highscore = (Button) findViewById(R.id.save);
highscore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Pass your score to other activity through Android's intent.
Intent intent = new Intent(getApplicationContext(),
highscore.class);
//THis highestScore variable will actually hold the score you get in this activity.
intent.putExtra("score", highestScore);
startActivity(intent);
}
});
}
}
高分班
public class highscore extends Activity {
TextView score;
Button back;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.highscore);
score = (TextView) findViewById(R.id.score);
int highestScore = -1;
//Now use this score variable to set anywhere.
Bundle extras = getIntent().getExtras();
if (extras != null) {
highestScore = extras.getInt("score");
}
back = (Button) findViewById(R.id.btn_back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"Back",
Toast.LENGTH_SHORT).show();
}
});
// TODO Auto-generated method stub
}
}
替换您的代码:
Bundle extras = getIntent().getExtras();
if (extras != null) {
highestScore = extras.getInt("score");
}
使用以下代码获取高分整数:
getIntent().getIntExtra("score", 0);
这可能对您有所帮助。有三种方法: 第一种方式:(不推荐): 在highscore.class上创建此静态变量,您将在levelcomplete.class上设置此公共变量,然后可以使用此变量。但这种方法不是一种好方法。因为如果你的设备必须运行大量的应用程序,这个静态变量会被垃圾收集删除。我们的数据将是云数据:) 第二条道路:(本次活动最适合您) 使用捆绑包在活动之间传递数据。这是你想要的最好的选择。 发送端:
intent.putExtra("OUR_SCORE_TAG", INTEGER_SCORE);
Bundle e = getIntent().getExtras();
if (e!= null) {
ourSCORE = extras.getInt("OUR_SCORE_TAG");
}
第三种方式:(最佳方式,但在您的示例中不需要重新查询,这可能会使用更复杂的类型):
在你的levelcomplete.class中
public interface MyHighScoreClickListener
{
public void onMyScoreButtonClickListener(int p_score);
}
并在levelcomplete.class中创建该接口的实例
public MyHighScoreClickListener listener;
highscore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Pass your score to other activity through Android's intent.
Intent intent = new Intent(getApplicationContext(),
highscore.class);
//THis highestScore variable will actually hold the score you get in this activity.
intent.putExtra("score", highestScore);
startActivity(intent);
listener.onMyScoreButtonClickListener(highestScore); // This is deadline :)
}
});
你的highscore.class必须删除MyHighScoreClickListener,如果你不这样做,这个模式就不会运行
public class highscore extends Activity implements MyHighScoreClickListener ...
然后重写highscore.class中的onMyScoreButtonClickListener方法,并编写用于设置文本的代码。这样实施:
public class highscore extends Activity {
TextView score;
Button back;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.highscore);
score = (TextView) findViewById(R.id.score);
int highestScore = -1;
@Override
public void MyHighScoreClickListener(int p_score)
{
this.highestScore = p_score;
score.setText(Integer.toString(this.hightScore));
}
这是一种设计模式。您不必在本例中使用此模式,但这会有所帮助。您能用您的代码编辑我的代码吗?哈哈哈,它给了我这个为你的代码编码的逻辑。只需要理解逻辑。这看起来很难,但其实很简单。抓住要点后,你将使用3。复杂apps.public类highscore extends活动中的示例实现了MyHighScoreClickListener{我在MyHighScoreClickListener上有一个错误,错误就在实现MyHighScoreClickListener之后