Android settext从其他类获得高分

Android 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

我正在创建一个具有高分的游戏,但我的问题是我无法通过levelcomplete.class的按钮将settext设置到我的highscore.class中。我的观点是,如果我的highscore(按钮)是从我的levelcomplete.class单击的,它将在我的highscore.class上自动显示一个textview settext

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之后