2016-12-31 70 views
-1

所以我有兩個應用程序頁面。該應用程序應該將通過pickTask通過第二頁,然後它應該顯示在下一頁。我得到的是在第二頁的創建沒有任何文本視圖分配到改變什麼都沒有,而是http://imgur.com/a/iymeW通過意圖傳遞字符串時遇到麻煩

第一頁:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    startActivity(goodIntentions); 
} 

第二頁:

 TextView mahTextView; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(com.example.cluel.oc.R.layout.activity_timer_list); 
    mahTextView = (TextView) findViewById(R.id.taskText); 

} 

public void Test(View view){ 
    Intent goodIntentions = getIntent(); 
    String mahString = goodIntentions.getStringExtra("pickedTask"); 
    mahTextView.setText(mahString); 
} 
+0

您是否真的試圖使用Intents在同一個應用中的多個視圖之間傳遞數據?意圖是爲了在多個應用程序之間傳遞數據。如果您只有一個顯示多個視圖的應用程序,則不需要爲此使用Intents。但是,在任何情況下,您的第二個視圖都沒有收到任何文本,因爲您沒有在啓動的Intent中放置任何文本。你的代碼創建了兩個單獨的Intent對象,一個帶有文本,另一個沒有,然後啓動第二個Intent(沒有任何文本的對象) –

+0

我試圖通過多個活動傳遞數據。 –

+0

我在網上買了一些課,這就是他們要做的。有一個更好的方法嗎?鏈接也許? –

回答

1
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    startActivity(goodIntentions); 
} 

您已經創建了兩個不同的Intent對象。 onCreate()創建了一個Intent設置文本,但是對此沒有任何作用。 goToTimerList()創建一個Intent並立即開始一個活動,但不設置任何額外。因爲您已經在每個函數的本地聲明瞭每個意圖變量,所以它們完全無關,即使它們具有相同的名稱。既然你不需要IntentonCreate()什麼,你應該把所有的邏輯,啓動第二活動goToTimerList()包括設置在意向書全文:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void goToTimerList(View view){ 
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class); 
    goodIntentions.putExtra("pickedTask", "Fire"); 
    startActivity(goodIntentions); 
} 

我建議你瞭解當地的變量和領域。這兩個主題將幫助您更多地瞭解我們如何在Java中使用變量。