Android 元件 Intent
1.顯性應用:
使用介紹:顯性:簡單的頁面跳轉、指定跳轉的頁面,我們稱顯性
關鍵程式碼 :
Intent:意圖
Intent intent = new Intent(現在的位置,要去的位置);
startActivity(intent);
|
我們開始來實現這個功能吧
詳細位置: Layout
重點摘要:
1.我們要先建立2個EmptyActicity,名子分別為Activity1、Activity2
2.EmptyActicity建立後,會自動產生Activity和Layout,成雙成對的
2.在MainActivity中建立2個按鈕,一個點擊後會跳轉到Activity1,另一個則是跳到Activity2
3.分別在Activity1、Activity2中 各建立一個返回的按鈕,跳轉回MainActivity
程式碼:
Layout:activity_main (先新增2個按鈕,可分別跳轉到不同頁面)
|
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.MainActivity">
<Button
android:id="@+id/bt_Go_Activity_1"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:onClick="onClick"
android:text="Go_Activity_1" />
<Button
android:id="@+id/bt_Go_Activity_2”
android:layout_width="200dp"
android:layout_height="50dp"
android:onClick="onClick"
android:text="Go_Activity_2" />
</LinearLayout>
|
Layout:activity_1
|
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.Activity1">
<TextView
android:id="@+id/tv_Activity1"
android:layout_width="149dp"
android:layout_height="wrap_content"
android:layout_weight="0.10"
android:text="Activity_1的頁面" />
<Button
android:id="@+id/btn_Activity_1_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Back" />
</LinearLayout>
|
Layout:activity_2
|
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.Activity2">
<TextView
android:id="@+id/tv_Activity2"
android:layout_width="90dp"
android:layout_height="47dp"
android:layout_gravity="center_vertical"
android:layout_weight="0.49"
android:text="Activity_2的頁面" />
<Button
android:id="@+id/btn_Activity_2_back"
android:layout_width="147dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="0.06"
android:onClick="onClick"
android:text="Back按鈕" />
</LinearLayout>
|
布局完成後 就可以開始寫程式碼了
JAVA:MainActivity
|
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); }
中介者模式,我怎麼知道是哪一個鈕按下去了
由Switch管理。
public void onClick(View view) {
//找到這個按下去View的ID
switch (view.getId()) {
//方法1:顯性的意圖(最基本的用法)
case R.id.bt_Go_Receive:
//創造一個意圖 Intent(目前的位置,要過去的位置);
Intent intent1 = new Intent(this, Activity1.class);
//開始
startActivity(intent1);
break;
//方法2:顯性的意圖(同上)
case R.id.bt_Go_Text:
Intent intent2 = new Intent(this, Activity2.class);
startActivity(intent2);
break;
}
}
}
|
Activity1
|
package com.example;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.example.andy.a0509_intent.R;
import java.util.Random;
public class Activity1 extends AppCompatActivity {
private TextView m_tv_Activity1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
findID();
}
private void findID() {
m_tv_TextActivity_text = (TextView) findViewById(R.id.tv_Activity1);
}
public void onClick(View view) {
//結束掉這一個Activity
finish();
}
}
|
Activity2
|
package com.example;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.example.andy.a0509_intent.R;
public class Activity2 extends AppCompatActivity {
private TextView m_tv_Activity2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
findID();
}
private void findID() {
m_tv_TextActivity_text = (TextView) findViewById(R.id.tv_Activity2);
}
public void onClick(View view) {
//結束掉這一個Activity
finish();
}
}
|
2.隱性應用:
使用介紹::未指定跳轉的頁面,我們稱隱性
簡單敘述:我們想像中一個場景
老師:請問 " 3+2=? "知道的同學請跟我說?
這時候鐵定會有2種情形發生
1.會『3+2=?』的同學, 會回答老師!
2.不會『3+2=?』的同學, ,就不回答老師
所以我們知道,腦海中有註冊"過3+2"的同學就會回應!
那我們該怎麼讓Activity 註冊過這個問題呢?
|
關鍵程式碼:
Manifest
|
<intent-filter>
<action android:name="問題"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
|
JAVA
|
Intent intent = new Intent();
intent3.setAction("問題");
startActivity(intent);
|
我們開始來實現這個功能吧
我們先在Layout;activity_main中 增加第三個按鈕(隱性測試用的)
|
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.example.MainActivity">
<Button
android:id="@+id/bt_Go_Activity_1"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:onClick="onClick"
android:text="Go_Activity_1" />
<Button
android:id="@+id/bt_Go_Activity_2”
android:layout_width="200dp"
android:layout_height="50dp"
android:onClick="onClick"
android:text="Go_Activity_2" />
<Button
android:id="@+id/bt_Go_隱式Intent"
android:layout_width="200dp"
android:layout_height="50dp"
android:onClick="onClick"
android:text="按鈕(隱性Intent測試)"
/>
</LinearLayout>
|
JAVA:MainActivity
|
package com.example;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.example.andy.a0509_intent.R;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private EditText m_tv_editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findID();
}
private void findID() {
m_tv_editText = (EditText) findViewById(R.id.tv_editText);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.bt_Go_Receive:
Intent intent1 = new Intent(this, Activity1.class);
startActivity(intent1);
break;
case R.id.bt_Go_Text:
Intent intent2 = new Intent(this, Activity2.class);
startActivity(intent2);
break;
//方法2:隱性的意圖
case R.id.bt_Go_隱式Intent:
Intent intent3 = new Intent();
intent3.setAction("help");
startActivity(intent3);
break;
}
}
}
|
我們來看看成果吧 (P.S很少人會這麼做,這個方法幾乎都用在APP之間的傳遞)
沒有留言:
張貼留言