2016-06-28 13 views
0

我正在尝试创建一个游戏日志,以显示游戏的每一轮发生的事情。日志在另一个活动中,但我希望随着玩家的操作不断更新。玩家只需按下执行某些操作的按钮即可。发布的代码太多,但是我已经制作了一个新的包和一个意图。通过主追加另一个活动的TextView

In MainActivity。

Bundle bundle = new Bundle(); 
Intent GameLogSwitch = new Intent(getApplicationContext(),GameLog.class); 

我想把这个发送到其他活动,但我不知道你是否可以把变量放在里面。否则它与简单的词语,如(“钥匙”,“它的工作原理”)

GameLogSwitch.putExtra("Break","---BREAK---"+"\n"+Player1Name+": "+GreenResult.getText()+"("+GrTop1+","+GrTop2+","+GrTop3+")"+"\n"+Player2Name+": "+RedResult.getText()+"("+RdTop1+","+RdTop2+","+RdTop3+")"); 

,然后我当然这个时候gamelog按钮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); 
    } 
} 

我有几个问题。首先,当我开始活动时,为什么只在我的字符串中追加一次,即当我再次返回并再次按下相同的按钮时,它不会在下面再次写入相同的内容?

其次,它似乎不适用于我的“休息”键,这是否与我发送的文本中存在变量这一事实有关?它只适用于简单文本,如GameLogSwitch.putExtra("key","It works");

必须有一个更简单的方法来做到这一点!谢谢。

更新1:从Drv的答案似乎工作,但是当我尝试做GameLogText.append(AppConstants.log)它只是替换textview中的所有内容,无论我按了多少次按钮。我认为每次重新开始时,活动都会重置。任何方式在这个?

+0

tl; dr。您最好查看EventBus库,它会让您的生活变得更加轻松,因为它可以让您将数据从任何地方异步发送到任何地方。 – Vucko

+2

http://square.github.io/otto/ – anivaler

+0

嗯不好意思看看那个。 – deathskiller

回答

1

请在常量类中的全局字符串,并使用它,无论你想:

public class AppConstants{ 

     public static String log=""; 
    } 

编辑字符串中的类,你要发送它的意图:

AppConstants.log="---BREAK---"+"\n"+Player1Name+": "+GreenResult.getText()+"("+GrTop1+","+GrTop2+","+GrTop3+")"+"\n"+Player2Name+": "+RedResult.getText()+"("+RdTop1+","+RdTop2+","+RdTop3+")"; 

而且用它您的课程为:

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); 

     //get your log here using AppConstants.log 
    } 
    } 
+0

这对我的问题的第一部分似乎有效,谢谢! – deathskiller

0

尝试使用getContext()代替getApplicationContext,然后检查您r string in debug mode

0

(发布代表OP的溶液)

我设法使用"\n"+AppConstants.log附加在每个输出结束。

相关问题