2012-05-15 39 views
0

我有這樣的代碼,但它不工作(強制關閉) ,我用這個在C#中,但它不是在java中工作如何從另一個類(安卓)

ClassA的C =新ClassA的()設置的TextView; c.TextView1.setText(「test」);

我需要設置從ClassB的文本視圖能不能做到 不使用意向 因爲意圖需要從頭再來的活動,所有的數據都將丟失

任何人都可以提出一個代碼這

也可以從我ClassB的

設置INT x值在ClassA的
+0

@Medo嘗試搜索'二者之間傳遞數據活動在andorid' –

+0

參考這一個http://stackoverflow.com/a/3510771/1021695 – KMI

回答

0

在ClassA的

定義你的TextView

private TextView1 txtView1; 

的onCreate

過程中加載它
txtView1 = (TextView) findViewById(R.id.txtView1); 

寫二傳手

public void setTextOnTextView1(String text) { 
    txtView1.setText(text); 
} 

在你的其他類,你可以現在

c.setTextOnTextView1("Hello"); 
+0

沒有工作(強制關閉) – Medo

+0

你是否願意提供日誌貓跟蹤?如果視圖不可見,您是否誇大了視圖? – Rawkode

+0

日誌跟蹤不適合在這裏大抱歉 – Medo

2

是的,你可以做 -

Intent i = new Intent(classA.this, classB.class); 
Bundle bundle = new Bundle(); 
bundle.putExtra("name For Identification", "Value); 
i.putExtras(bundle); 
startActivity(i); 

在你的第二類,我的意思是B類

Bundle bundle = getIntent().getExtras("name for Identification"); 
String text = bundle.getString("name For Identification"); 

只需將此文本設置爲您TextView而且,B類還應該擴展Activity否則,getIntent()代碼將無法正常工作。

0

試試這個

在活動添加這1

Intent myIntent = new Intent(Activity1.this, Activity2.class); 
     myIntent.putExtra("UserId",UserId); 
     myIntent.putExtra("UserName",UserName); 
     startActivity(myIntent); 

在活動2

Intent intent = getIntent(); 
UserId=intent.getStringExtra("UserId"); 
UserName=intent.getStringExtra("UserName"); 
0

添加此燁它可以在不使用的意圖來完成,使用類的靜態方法/成員

從ClassA的靜態方法獲取TextView對象,同樣定義一個stat IC法setX的(INT X)在ClassA的

所以方法例如

class ClassA{ 

static TextView tv; //this should be intialized in your code via findViewByID or by code depneds 

static int x; 


static public TextView getTextView(){ 
return tv; 
} 


static public void setX(int xP){ 
x = xP; 
} 

} 

從ClassB的你可以調用ClassA.getTextView()和ClassB。setX的(12)

0

意圖從B級A級

Intent toClassB = new Intent(classA.this,classB.class); 
toClassB.putExtra("StringId","value"); 
startActivity(toClassB); 

//get value 
Intent intent = getIntent(); 
String getValue = intent.getStringExtra("StringId"); 
//set text 
textView.setText(getValue); 

希望這有助於

0

要在兩個activites之間傳遞值,可以使用共享Preferenceas遵循

在活動答:

public class activityA extends Activity{ 

private final String MY_value = "value";//variable used for shared preference 
@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
SharedPreferences myPrefs = getBaseContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
        SharedPreferences.Editor prefsEditor = myPrefs.edit(); 
        prefsEditor.putString(MY_value, "xyz"); 
        prefsEditor.commit(); 
} 
} 

在活動B中,您可以按如下方式回顧該值:

public class activityB extends Activity{ 

    private final String MY_value = "value";//variable used for shared preference 
    @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
    SharedPreferences myPrefs1 = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); 
       roadworthynumber = myPrefs1.getString(MY_value, "value"); 

    } 
    } 
0

在A類創建函數returnThis()

ClassA returnThis() 
{ 
    return this; 
} 

在CLASSB調用此函數,並通過使用返回的引用設定的TextView的CLASSA