2013-03-08 69 views
0

好了,所以......我一直在试图影响文本TextView的(因为它意在显示文本,对不对?) 但不知到我的理由拒不打印什么我投入了它。的Android TextView中不会显示受影响的文本

我的应用程序有两个活动,MainAcivity,或一个欢迎屏幕,本身和一个GameActivity(该项目是一个Domino游戏)。

我在GameActivity类的开头创建了我以前编写的java对象,然后试图在TextView中显示玩家的名字。

Player player1 = new Player("Hulk"); 

创建一个名为Hulk的球员,就像你想象的那样。我有内Player.java方法返回玩家的名字:

player1.getName() 

返回字符串“绿巨人”

然后我试图通过创建一个手柄将其与设定我的TextView的文本绿巨人,第一关:

TextView p1v = (TextView) findViewById(R.textviews.p1view); 

然后执行下列操作:

p1v.setText("Player 1 : " + player1.toString()); 

的p1view定义如下内的game.xml布局:

<LinearLayout 
... 
    <LinearLayout 
... 
     <TextView 
      android:id="@+textviews/p1view" 
      android:text="Board" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 
</LinearLayout> 

我试过p1view.textAppend,尝试使用android:editable =“true”。似乎没有任何工作。

有趣的是,虽然,当我试图做同样的事情,内MainActivity,它的工作原理,像这样: 公共类

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

与main.xml文件中定义的TextView的如下:

<TextView 
     android:id="@+textviews/mainview_player" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 

以下是文件的完整代码,只是为了避免这样的答案:给我们的全部代码d:

GameActivity.java:

包domino.asd;

import LI260。*;导入android.app.Activity;导入android.os.Bundle; import android.widget.TextView;

公共类GameActivity延伸活动{

private Player player1 = new Player("HULK"); 
private Player player2 = new Player("CPU"); 
private Pioche bag = new Pioche(); 
private Plateau board = new Plateau(); 
private Game game1 = new Game(bag, board, player1, player2); 
TextView p1name = null; 
TextView p2name = null; 

/** 
* Called when the activity is first created. 
* 
* @param savedInstanceState 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.game); 
    TextView tv = (TextView) findViewById(R.textviews.p1view); 
    tv.setText(player1.getName()); 
} } 

game.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:weightSum="10" 

> 
    <!-- Played layout --> 
    <LinearLayout 
     android:id="@+drawable/gameview_Scores" 
     android:layout_width="fill_parent" 
     android:layout_height="0px" 
     android:layout_gravity="top" 
     android:layout_weight="2" 
     android:layout_marginBottom="10px" 
     android:orientation="horizontal" 
     android:background="#ff0000" 
     android:gravity="center" 
    > 
     <Button 
      android:id="@+buttons/exitButton" 
      android:text="Exit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      /> 

     <Button 
      android:id="@+buttons/drawButton" 
      android:text="Draw" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     /> 

     <Button 
      android:id="@+buttons/scoresButton" 
      android:text="Show scores" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 

    <!-- Board layout --> 
    <LinearLayout 
     android:id="@+textviews/gameview_Table" 
     android:layout_width="fill_parent" 
     android:layout_height="0px" 
     android:layout_gravity="center" 
     android:layout_weight="6" 
     android:layout_marginBottom="10px" 
     android:background="#ffff00" 
    > 
     <TextView 
      android:id="@+textviews/p1view" 
      android:text="Board" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 

    <!-- At hand layout --> 
    <LinearLayout 
     android:id="@+drawable/gameview_Playable" 
     android:layout_width="fill_parent" 
     android:layout_height="0px" 
     android:layout_weight="2" 
     android:layout_gravity="bottom" 
     android:background="#ff00ff" 
    > 
     <TextView 
      android:id="@+textviews/gameview_AtHandText" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     /> 
    </LinearLayout> 
</LinearLayout> 

MainActivity.java:

package domino.asd; 

import LI260.*; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    Player p1 = new Player("Hulk"); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView p1view = (TextView) findViewById(R.textviews.mainview_player); 
     p1view.setText(p1.getName()); 
    } 

    public void btnClick_Name(View view) { 

     if (view.getId() == R.buttons.B_EnterName) { 
      EditText playersname = (EditText) findViewById(R.string.playerNameInput); 
      Toast.makeText(this, "Your name: " + playersname.getText().toString(), Toast.LENGTH_SHORT).show(); 

     } 

     setContentView(R.layout.game); 
    } 
} 

,最后主。XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="center" 
> 
    <EditText 
     android:id="@+string/playerNameInput" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="textMultiLine" 
     android:lines="1" 
     /> 

    <TextView 
     android:id="@+textviews/mainview_player" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     /> 

    <Button 
     android:id="@+buttons/B_EnterName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Save name and start game." 
     android:onClick="btnClick_Name" 
     /> 

</LinearLayout> 
+3

你似乎已经做了所有事情,除了告诉我们什么是问题。 – Simon 2013-03-08 18:32:08

+1

没有必要发誓。 – Sam 2013-03-08 18:33:22

+0

问题是,我想在我的GameActivity中显示player1的名称,它不会显示,与MainActivity相反,我不需要它显示,它确实如此:< – 2013-03-08 18:34:50

回答

3

当你第一次加载活动,您呼叫此代码:

setContentView(R.layout.main); 
TextView p1view = (TextView) findViewById(R.textviews.mainview_player); 
p1view.setText(p1.getName()); 

然而,当用户点击的你只调用这个代码的按钮:

setContentView(R.layout.game); 

由于您已重置主内容视图,因此从R.layout.game膨胀时,子视图mainview_player已被销毁并被替换为新视图。

您将需要再次调用此代码,以找到在游戏界面,新的观点,并与您的播放器的名称来填充它:

TextView p1view = (TextView) findViewById(R.textviews.mainview_player); 
p1view.setText(p1.getName()); 

你会得到更好的寻找到活动如何与彼此开始一个新的活动R.layout.game

+0

好地方。我错过了! – Simon 2013-03-08 18:42:35

+0

R.layout.game有它自己的活动,GameActivity.java处理它。这正是我希望TextView显示玩家姓名(而不是)的地方。 我只在MainActivity中添加它以显示它在那里工作,而不是在我想要的GameActivity内。 – 2013-03-08 18:47:14

+0

然后,您需要使用带有Intent的startActivity,并使用Intent.putStringExtra将其传递给GameActivity类...然后使用Context.getData()将其抓到另一侧的intent并调用Intent.getStringExtra()从意图中提取字符串 – Merlin 2013-03-08 18:51:35