我正在尝试创建游戏日志,以显示每轮游戏中发生的事情。该日志是另一项活动,但我希望不断更新玩家所做的事情。玩家只需按下可执行某些操作的按钮。发布的代码太多了,但是我创建了一个新的包和一个意图。
在MainActivity中。
Bundle bundle = new Bundle();
Intent GameLogSwitch = new Intent(getApplicationContext(),GameLog.class);
我试图把它发送到其他活动,但我不知道你是否可以把变量放入其中。否则它适用于简单的单词,如(“key”,“It works”)
GameLogSwitch.putExtra("Break","---BREAK---"+"\n"+Player1Name+": "+GreenResult.getText()+"("+GrTop1+","+GrTop2+","+GrTop3+")"+"\n"+Player2Name+": "+RedResult.getText()+"("+RdTop1+","+RdTop2+","+RdTop3+")");
然后当按下游戏日志按钮时,我有这个
startActivity(GameLogSwitch);
现在在Gamelog.class我有这个。
package com.example.adam.snookerproject;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class GameLog extends AppCompatActivity {
private TextView GameLogText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_log);
GameLogText = (TextView) findViewById(R.id.GameLogText);
Intent GameLogSwitch = getIntent();
String myString = GameLogSwitch.getStringExtra("Break");
GameLogText.append(myString);
}
}
我有几个问题。首先,为什么在我开始活动时只追加一次用我的字符串工作,即当我回去并再次按下相同的按钮时,它不会在下面再写同样的东西?
其次,它似乎不适合我的“Break”键,这是否与我发送的文本中有变量这一事实有关?它仅适用于GameLogSwitch.putExtra("key","It works");
必须有一种更简单的方法来做到这一点!谢谢。
更新1:Drv的答案似乎确实有效,但是当我尝试GameLogText.append(AppConstants.log)
时,无论我按下按钮多少次,它都会替换textview中的所有内容。我认为活动只是在每次重新启动时重置。有什么方法吗?
答案 0 :(得分:1)
在Constants类中创建一个全局字符串,并在任何地方使用它:
class YourMigrationName < ActiveRecord::Migration
def up
add_reference :categories, :store, index: true
Category.all.each do |category|
category.store_id = category.product_id
category.save
end
remove_column :product_id
end
def down
add_reference :categories, :product, index: true
Category.all.each do |category|
category.product_id = category.store_id
category.save
end
remove_reference :categories, :store, index: true
end
end
编辑要在意图中发送它的类中的字符串:
public class AppConstants{
public static String log="";
}
并在课堂上使用它:
AppConstants.log="---BREAK---"+"\n"+Player1Name+": "+GreenResult.getText()+"("+GrTop1+","+GrTop2+","+GrTop3+")"+"\n"+Player2Name+": "+RedResult.getText()+"("+RdTop1+","+RdTop2+","+RdTop3+")";
答案 1 :(得分:0)
尝试使用getContext()而不是getApplicationContext,然后在调试模式下检查字符串
答案 2 :(得分:0)
使用回调或界面。从主活动触发接口,并在活动中实现要更新Textview的调用接口。在该方法内更新文本视图。
Read here More about Communication between Activity Activity and Fragment Activity
答案 3 :(得分:0)
(代表OP发布解决方案)。
我设法在每个输出的末尾使用"\n"+AppConstants.log
附加。