歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 四大組件

Android 四大組件

日期:2017/3/1 10:45:23   编辑:Linux編程

1、使用Intent對象來指定一個Activity,並通過startActivity或startActivityForResult方法啟動該Activity.以及在Activity之間傳遞數據:

  1. public class MainActivity extends Activity {
  2. private Button btn1,btn2;
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. LinearLayout view = new LinearLayout(this);
  7. view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
  8. btn1 = new Button(this);
  9. btn1.setId(1);
  10. btn1.setText("使用類名開啟另一個Activity");
  11. btn1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  12. btn2 = new Button(this);
  13. btn2.setId(2);
  14. btn2.setText("使用action開啟另一個Activity");
  15. btn2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  16. view.addView(btn1);
  17. view.addView(btn2);
  18. setContentView(view);
  19. btn1.setOnClickListener(listener);
  20. btn2.setOnClickListener(listener);
  21. }
  22. private View.OnClickListener listener = new OnClickListener() {
  23. @Override
  24. public void onClick(View view) {
  25. Intent intent = new Intent();
  26. switch (view.getId()) {
  27. case 1:
  28. intent.setClass(MainActivity.this, ResultActivity.class);
  29. intent.putExtra("name", "JAVA");
  30. startActivityForResult(intent, 222);
  31. break;
  32. case 2:
  33. intent.setAction("forResult");
  34. MyData myData = new MyData();
  35. //使用putExtra傳遞自定義對象時,該對象必須實現序列化,該類中的所有成員屬性也必須實現序列化接口
  36. intent.putExtra("data", myData);
  37. startActivity(intent);
  38. break;
  39. default:
  40. break;
  41. }
  42. }
  43. };
  44. @Override
  45. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  46. //requestCode是請求碼,即startActivityForResult(intent, 222)中的第二個參數
  47. //resultCode是結果碼,即setResult(333)中設置的數字
  48. switch (requestCode) {
  49. case 222:
  50. if(resultCode == 333){
  51. Toast.makeText(this, "無結果返回...", Toast.LENGTH_LONG).show();
  52. } else if(resultCode == 444){
  53. Toast.makeText(this, data.getStringExtra("result"), Toast.LENGTH_LONG).show();
  54. }
  55. break;
  56. default:
  57. break;
  58. }
  59. }
  60. }

  1. public class ResultActivity extends Activity {
  2. private Button btn1 , btn2;
  3. private TextView tv;
  4. private Intent intent;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. // TODO Auto-generated method stub
  8. super.onCreate(savedInstanceState);
  9. intent = getIntent();
  10. LinearLayout view = new LinearLayout(this);
  11. view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
  12. LayoutParams.FILL_PARENT));
  13. tv = new TextView(this);
  14. tv.setText("name is "+intent.getStringExtra("name"));
  15. tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
  16. LayoutParams.WRAP_CONTENT));
  17. btn1 = new Button(this);
  18. btn1.setId(1);
  19. btn1.setText("Back1");
  20. btn1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
  21. LayoutParams.WRAP_CONTENT));
  22. btn2 = new Button(this);
  23. btn2.setId(2);
  24. btn2.setText("Back2");
  25. btn2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
  26. LayoutParams.WRAP_CONTENT));
  27. view.addView(tv);
  28. view.addView(btn1);
  29. view.addView(btn2);
  30. btn1.setOnClickListener(listener);
  31. btn2.setOnClickListener(listener);
  32. setContentView(view);
  33. }
  34. private View.OnClickListener listener = new OnClickListener() {
  35. @Override
  36. public void onClick(View view) {
  37. switch (view.getId()) {
  38. case 1:
  39. setResult(333);
  40. break;
  41. case 2:
  42. intent.putExtra("result", "帶結果返回");
  43. setResult(444, intent);
  44. break;
  45. default:
  46. break;
  47. }
  48. ResultActivity.this.finish();
  49. }
  50. };
  51. }

  1. public class Result2Activity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.main);
  6. MyData data = (MyData)getIntent().getSerializableExtra("data");
  7. setTitle(data.value);
  8. }
  9. }

  1. public class MyData implements Serializable {
  2. public String value = "this is test";
  3. }

2、Intent指定Activity的方式

2.1 直接使用Class

code :

intent.setClass(MainActivity.this, ResultActivity.class);

manifest :

<activity Android:name=".ResultActivity"></activity>

2.2 使用Action

code :

intent.setAction("forResult");

manifest :

<activity android:name=".Result2Activity">
<intent-filter>
<action android:name="forResult"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>

2.3 使用包名

code :

ComponentName cn = new ComponentName(MainActivity.this, "com.zj.activity.another.ActivityA");

intent.setComponent(cn);

manifest:

<activity android:name=".another.ActivityA"></activity>

Copyright © Linux教程網 All Rights Reserved