2013-10-17 56 views
1

好吧所以我想使用getextrand putextra方法將值從一個活動傳遞給另一個。GetExtra PutExtra

在我想要接收數據的第二個活動中充滿了按鈕和文本視圖等內容。我想將我從MainActivity收到的特定值設置爲特定的文本框。

setContenView(R.id.intent) 

是顯示字符串的最簡單的方法,但如果我想將此值設置爲一個或多個textview,該怎麼辦?我的代碼是在這裏

MainActivity

package com.prashant.cookbook; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 


public class MainActivity extends Activity { 


static String Message_send="Prashant"; 

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

    EditText et=(EditText)findViewById(R.id.editText1); 
    Button send=(Button)findViewById(R.id.send); 

    final Intent msg_send= new Intent(this,Second.class); 
    String MSG= et.getText().toString(); 
    msg_send.putExtra(Message_send, MSG); 
    send.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      startActivity(msg_send); 


     } 
    }); 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

SecondAvtivity

package com.prashant.cookbook; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.widget.TextView; 

public class Second extends Activity { 

private TextView tv; 
private Intent rcv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    tv = (TextView) findViewById(R.id.msg_show); 
    rcv = getIntent(); 
    String Show_msg; 
    Show_msg=rcv.getStringExtra(MainActivity.Message_send); 
    tv.setText(Show_msg); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.second, menu); 
    return true; 
} 

}

但是當我運行這段代碼我只是一個空白的第二個活動甚至不預設文字

+0

你有什麼話把裏面activity_second.xml? – Blackbelt

+0

一個textview。

回答

2

獲得價值由用戶輸入的EditText上的按鈕點擊,然後使用msg_send.putExtra放置值意向爲:

send.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     String MSG= et.getText().toString(); //<< get value from EditText here 
     msg_send.putExtra(Message_send, MSG);    
     startActivity(msg_send); 
    } 
}); 
+0

非常感謝。這樣可行。 –

+0

正在使用'static''String'並像'getIntent()。getStringExtra(MainActivity.SomeStaticString)'這樣訪問它''好主意?我見過人們這樣做,但我從來沒有想過這似乎是安全的... – codeMagic

+2

@codeMagic是的。它提高了代碼的可讀性,並且不易出現錯誤 – Blackbelt