2013-03-08 68 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