- Android Application Development Cookbook(Second Edition)
- Rick Boyer Kyle Mew
- 464字
- 2021-07-09 19:36:19
Passing data to another activity
The intent object is defined as a messaging object. As a message object, its purpose is to communicate with other components of the application. In this recipe, we'll show you how to pass information with the intent and how to get it out again.
Getting ready
This recipe will pick up from where the previous one ended. We will call this project SendData
.
How to do it...
Since this recipe is building on the previous recipe, most of the work is already done. We'll add an EditText
element to the main activity so that we have something to send to SecondActivity
. We'll use the (autogenerated) TextView
view to display the message. Here are the complete steps:
- Open
activity_main.xml
, remove the existing<TextView>
element, and add the following<EditText>
element:<EditText android:id="@+id/editTextData" android:layout_width="match_parent" android:layout_height="wrap_content"/>
The
<Button>
element that we created in the previous recipe doesn't change. - Now, open the
MainActivity.java
file and change theonClickSwitchActivity()
method as follows:public void onClickSwitchActivity(View view) { EditText editText = (EditText)findViewById(R.id.editTextData); String text = editText.getText().toString(); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra(Intent.EXTRA_TEXT,text); startActivity(intent); }
- Next, open the
activity_second.xml
file and modify the<TextView>
element to include the ID attribute:<TextView android:id="@+id/textViewText" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
- The last change is to edit the second activity to look for this new data and display it on the screen. Open
SecondActivity.java
and editonCreate()
as follows:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); TextView textView = (TextView)findViewById(R.id.textViewText); if (getIntent()!=null && getIntent().hasExtra(Intent.EXTRA_TEXT)) { textView.setText(getIntent().getStringExtra(Intent.EXTRA_TEXT)); } }
- Now run the project. Type some text on the main activity and press Launch Second Activity to see it send the data.
How it works...
As expected, the intent object is doing all the work. We created an intent just as in the previous recipe and then added some extra data. Did you notice the putExtra()
method call? In our example, we used the already defined Intent.EXTRA_TEXT
as the identifier, but we didn't have to. We can use any key we want (you've seen this concept before if you're familiar with name/value pairs).
The key point about using name/value pairs is that you have to use the same name to get the data back out. That's why we used the same key identifier when we read the extra data with getStringExtra()
.
The second activity was launched with the intent that we created, so it's simply a matter of getting the intent and checking for the data sent along with it. We do this in onCreate()
:
textView.setText(getIntent().getStringExtra(Intent.EXTRA_TEXT));
There's more...
We aren't limited to just sending String
data. The intent object is very flexible and already supports basic data types. Go back to Android Studio and click on the putExtra
method. Then hit Ctrl and the Spacebar. Android Studio will bring up the autocomplete list so that you can see the different data types that you can store.
- Learn ECMAScript(Second Edition)
- Docker技術入門與實戰(第3版)
- Java面向對象軟件開發
- Spring技術內幕:深入解析Spring架構與設計
- arc42 by Example
- Access 數據庫應用教程
- JIRA 7 Administration Cookbook(Second Edition)
- Java開發入行真功夫
- Quarkus實踐指南:構建新一代的Kubernetes原生Java微服務
- Learning Unity 2D Game Development by Example
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- Learning Unreal Engine Android Game Development
- iPhone應用開發從入門到精通
- Flask Web開發:基于Python的Web應用開發實戰(第2版)
- 超簡單:Photoshop+JavaScript+Python智能修圖與圖像自動化處理