quang cao hosting

Chuyển đổi Activity trong Android

Xem: 3635    Tải: 0   Thảo luận: 0   Mục: Android   Lĩnh vực: Khác

0 điểm   ( 62 đánh giá ) File đã được kiểm thử

Trong một ứng dụng Android thì người dùng thao tác với các Activity, và 1 ứng dụng thì không thể chỉ có 1 Activity không mà cần có nhiều Activity. và trong lập trình bạn cần chuyển đổi qua lại giữ các Activity với nhau đồng thời truyền dữ liệu trừ Activity trước sang Activity mới để có thể xử lý.

1. Giao diện :

Để lấy ví dụ tôi xin được lấy 1 Demo như ảnh sau :

Như ảnh các bạn sẽ thấy có sẽ đi xây dựng 2 Layout bao gồm layout1 và layout2. Khi người dùng điền thông tin như Name, Ý kiến phàn hồi và click vào nút Gửi Phản Hồi thì thông tin sẽ được chuyển đi sang layout2 và hiện thị chúng.

Bây giờ chúng ta đi xây dựng giao diện 2 layout này :

Layout1 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="fill_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context=".FirtActivity" >
 
<TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Chào mừng các bạn đến với Blog GocLapTrinh.Com"
 android:textSize="20sp" />
 
<LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical" >
 
<TextView
 android:id="@+id/tvName"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Name :"
 android:textSize="20sp" />
 
<EditText
 android:id="@+id/etName"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" >
 </EditText>
 
<TextView
 android:id="@+id/tvYKien"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Ý kiến phản hồi :"
 android:textSize="20sp" />
 
<EditText
 android:id="@+id/etYKien"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" >
 </EditText>
 </LinearLayout>
 
<Button
 android:id="@+id/btGui"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:text="Gửi Phản Hồi" />
 
</LinearLayout>

Layout2:

<LinearLayout android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical"
 xmlns:android="http://schemas.android.com/apk/res/android">
 
<TextView
 android:id="@+id/textView1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Cảm ơn ý kiến của bạn !"
 android:textSize="20sp" />
 
<LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical" >
 
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/textName"
 android:textSize="20sp" />
 
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:id="@+id/textYKien"
 android:textSize="20sp" />
 </LinearLayout>
 
<Button
 android:id="@+id/btBack"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Quay Lại" />
 
</LinearLayout>

2. Xử lý code.

Trước tiên chúng ta cần tìm hiều qua một số phương thức mới cần được sử dụng :

- Để mở mới một Activity thì ta sử dụng phương thức : startActivity() hoặc bạn có thể dùng phương thức  startActivityForResult() 

Intent i = new Intent(getApplicationContext(), SecondScreen.class);
StartActivity(i);

- Để truyền dữ liệu sang Activites mới thì ta sử dụng phương thức putExtra() :

</pre>
i.putExtra("key", "value");
 
//Vi du tôi muốn gửi giá trị name thì key là name và value là Tien Bui
i.putExtra("name", "Tien Bui");
<pre>

- Tiếp theo là nhận giữ liệu ở Activity mới được gửi từ Activity trước ta sử dụng phương thức getStringExtra() :

Intent i = getIntent();
i.getStringExtra("key");
// Ví dụ tôi muốn lấy giá trị name mà trước đó tồi đã truyền đi :
String textName= i.getStringExtra("name");

- Sử dụng phương thức startActivityForResult() nhằm mục đích muốn đợi dữ liệu từ các hoạt động trước tạo ra và sau khi thực hiện xong hoạt động mới thì bạn đóng lại thì bạn dùng onActivityResult () để đọc kết quả.

</pre>
Intent i = new Intent(getApplicationContext(), SecondScreen.class);
startActivityForResult(i, 100); // 100 is some code to identify the returning result
 
// Function to read the result from newly created activity
@Override
 protected void onActivityResult(int requestCode,
 int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if(resultCode == 100){
 
 // Storing result in a variable called myvar
 // get("name") 'name' là từ khóa của dữ liệu
 String myname = data.getExtras().get("result");
 }
 
 }
<pre>

- Để gửi trả lại kết quả của hoạt động cũ bạn dùng phương thức : StartActivityForResult()

Intent i = new Intent();
// Sending param key as 'name' and value as 'Tien Bui'
i.putExtra("name", "Tien Bui");
// Setting resultCode to 100 to identify on old activity
setResult(100,in);

- Để đóng Activity lại ta dùng phương thức : finish();

- Bạn cũng cần thêm 1 Activity mới trong file  AndroidManifest.xml  bằng cách thêm code sau vào giữa cặp thẻ <application>

<br />&lt;activity android:name=".NewActivityClassName"&gt;&lt;/activity&gt;<br />

Để tương ứng với 2 Layout chúng ta đã tạo ở trên, thì chúng ta cũng cần có 2 file FirtActivity.java và SecondActivity.java để xử lý các sự kiện tương ứng cũng như truyền và nhận dữ liệu :

Các bạn mở file FirtActivity.java và thực hiện code sự kiện cho nút Button Gửi Phản Hồi.

</pre>
package com.tien.swicthlayoutdemo;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
public class FirtActivity extends Activity {
private EditText etName, etYKien;
private Button btGui;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.layout1);
 etName = (EditText) findViewById(R.id.etName);
 etYKien = (EditText) findViewById(R.id.etYKien);
 btGui = (Button) findViewById(R.id.btGui);
 btGui.setOnClickListener(new OnClickListener() {
 
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 Intent switchLayout = new Intent(getApplicationContext(),SecondActivity.class);
 switchLayout.putExtra("name", etName.getText().toString());
 switchLayout.putExtra("yKien", etYKien.getText().toString());
 Log.e("n", etName.getText()+"."+ etYKien.getText());
 startActivity(switchLayout);
 }
 });
 }
 
@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;
 }
 
}
<pre>

Tiếp đến là file SecondActivity.java :

</pre>
package com.tien.swicthlayoutdemo;
 
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.TextView;
 
public class SecondActivity extends Activity {
 private TextView textName, textYKien;
 private Button btBack;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.layout2);
 textName = (TextView) findViewById(R.id.textName);
 textYKien = (TextView) findViewById(R.id.textYKien);
 btBack = (Button) findViewById(R.id.btBack);
 
 Intent i = getIntent();
 String name = i.getStringExtra("name");
 String yKien = i.getStringExtra("yKien");
 
 textName.setText(name);
 textYKien.setText(yKien);
 btBack.setOnClickListener(new OnClickListener() {
 
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 finish();
 Intent i = new Intent(getApplicationContext(), FirtActivity.class);
 startActivity(i);
 }
 });
 }
 
@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;
 }
 
}
<pre>

Bây giờ bạn có thể chạy thử chương trình và kết quả sẽ như sau :


Chuyển đổi Activity trong Android

Chuyển đổi Activity trong Android Đăng ngày 11-02-2014  Trong một ứng dụng Android thì người dùng thao tác với các Activity, và 1 ứng dụng thì không thể chỉ có 1 Activity không mà cần có nhiều Activity. và trong lập trình bạn cần chuyển đổi qua lại giữ các Activity với nhau đồng thời truyền dữ liệu trừ Activity trước sang Activity mới để có thể xử lý. 5/10 3635

Thảo luận:

Để bình luận bạn phải đăng nhập thành viên.

File tương tự

Files cùng mục

 
File gợi ý cho bạn
File tải nhiều nhất
Megacode.vn - Thư viện mã nguồn chia sẻ, tải file cho cộng đồng
Copyright © 2013-2021. All rights reserved. Bản quyền thuộc VinaGon
Email: info@vinagon.com
Hotline: 086.924.3838