2011-08-29 101 views
1

我知道有幾個關於這個問題,但我仍然沒有得到它。 我有一個活動TextView和setText從類

package test.example.om; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import test.example.om.Texter; 

public class TextActivity extends Activity { 
    /** Called when the activity is first created. */ 

    public String text="Helloo"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Texter myTexter = new Texter(); 
     myTexter.textTexter(); 


    } 
    public void textSet(){ 
     TextView tv = (TextView) findViewById(R.id.myTextViewInXml); 
      tv.setText(text); 
} 
} 

和A類needle。

package test.example.om; 

import android.widget.TextView; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class Texter extends Activity{ 
String string="Helloo"; 


public void textTexter(){ 
    TextView tv = (TextView) findViewById(R.id.myTextViewInXml); 
     tv.setText(string); 
} 
} 

的logcat的是示出一個NullPointerException和應用程序崩潰。我在做什麼錯了,我如何將TextTextText從另一個類比主活動類設置爲TextView?

+1

爲什麼不返回一個字符串函數並在主要活動中使用setText?看起來像我的奇怪的代碼。 – Ricky

回答

3

你正在實例化一個活動子類,你不應該這樣做... 此外,你正試圖找到ViewById(在Texter類),而你的上下文爲空,因爲你還沒有經過正確的活動生命週期。

爲了更改文本視圖的文本,只需將textTexter方法從Texter移動到TextActivity並調用它。 刪除Texter活動,因爲它未被使用。

package test.example.om; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import test.example.om.Texter; 

public class TextActivity extends Activity { 
    /** Called when the activity is first created. */ 

    public String text="Helloo"; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     TextView tv = (TextView) findViewById(R.id.myTextViewInXml); 
     tv.setText(text); 


    } 

} 

編輯:只是注意到你想從另一個類做它。要做到這一點,只需給你想要改變的文本視圖提供參考並在其上設置setText