2014-12-25 71 views
1

我一直在這個問題上停留太久。我認爲這很簡單,但我是一個新手android開發人員,所以你的幫助將不勝感激。如何設置其他活動類別的文本

我有兩個活動。我的主要活動佈局有一個文本視圖和一個按鈕。我想要做的是實現按鈕來從另一個活動類(Btn類)更改textview的文本。

這是我的幹訓班

public class Btn extends Activity implements OnClickListener { 
    Button btn; 
    TextView textBox; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.btn); 
     textBox = (TextView)findViewById(R.id.address); 
     btn.setOnClickListener(this);   
    } 

    @Override 
    public void onClick(View v) { 
     textBox.setText("Test Test"); 
    } 

} 

現在這個編譯和工作正常,但是當我按下按鈕沒有任何反應。 我想知道如何改變textview的文本,當我按下按鈕。我知道如何在我的主要活動課上做到這一點,但我想從另一個班級做到這一點。

+0

可能重複[如何在Android中將對象從一個活動傳遞給另一個](http://stackoverflow.com/questions/2736389/how-to-pass-object-from-one-activity-to-another- in-android) –

+0

你的問題對我來說並不清楚,你是否想在從Btn的第二個活動類獲取一些數據後,在MainActivity類中更改textview的文本? –

回答

1

請嘗試執行下面的代碼,

MainActivity.java

public class MainActivity extends Activity implements OnClickListener { 

    Button btn; 
    TextView textBox; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.btn); 
     textBox = (TextView)findViewById(R.id.address); 
     btn.setOnClickListener(this);   
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.btn: 
      String strTemp = "Test Test"; 
      textBox.setText(strTemp); 

      Intent intent = new Intent(MainActivity.this, Second.class); 
      intent.putExtra("tempstring", strTemp); 
      startActivity(intent); 
      break; 

     default: 
      break; 
     } 

    } 
} 

Second.java

public class Second extends Activity { 

    private TextView txtTemp; 

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

     txtTemp = (TextView) findViewById(R.id.txt_temp); 

     Intent intent = getIntent(); 
     String strTemp = intent.getStringExtra("tempstring"); 

     txtTemp.setText(strTemp); 
    } 
} 

希望它爲你工作。

+1

也許這個解釋是有用的,而不是「這是一些代碼」。 –

+0

在您的主要活動中定義edittext或textview,如txtUname和txtEmail並定義一個按鈕,單擊此按鈕時從MainActivity.java中放置上述代碼,現在創建第二個佈局,您可以使用intent顯示數據Second.java並設置從您的結尾所需的文本。我希望這會對你有用。 –

1

即使你真的是一個完整的新手,第二件事要學習後的活動是意向。 沒有必要讓一個Activity從另一個活動中檢索對象的數據和屬性,並直接向它們發送更改,這對運行時並不安全,因爲您不能100%確定該背景活動未被系統終止。 因此Intents被髮明用於調用活動並將數據傳遞給它們。 Android編碼器提供的代碼以這種方式工作。首先,創建一個Intent對象,將額外的數據(例如要設置爲其他Activity的TextView的文本)放入其中,最後啓動一個負責此類Intent的Activity。在這段代碼中,Intent是顯式的,這意味着應該調用某個包的某個Activity。在這個Activity中,有一個代碼檢查是否有一個Intent調用,從中讀取額外的數據(你的文本),最後調用setText()。 也有隱含的意圖,基於數據和行動的類型。由系統決定是否在設備上存在的所有軟件包的所有活動之間進行選擇,這可以處理您提供給意圖的數據類型。 沒有什麼個人的,但如果你不能理解意圖,你不會理解Android。試試這個非常辛苦。

相關問題