標籤:android intent
Intent 信使、意圖
由Intent來協助Android各個組件之間跳轉
1、
startActivity(intent)
包下建立一個類,FActivity.class
public class FActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.factivity); }}
建立一個XML檔案factivity.xml
<Button android:id="@+id/bt1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="First"/><Button android:id="@+id/bt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Second"/><TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:layout_gravity="center" />
同樣在建立第二對class和xml。
在AndroidManiFest中註冊兩個新類,並將預設啟動類放在最前:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bcp.layouttest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
添加按鈕事件:
public class FActivity extends AppCompatActivity { private Button bt_first; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.factivity); /*** * 點擊第一個按鈕實現跳轉頁面 */ bt_first= (Button) findViewById(R.id.bt1); bt_first.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(); //第一個:內容物件 //第二個:目標檔案 intent.setClass (FActivity.this,SActivity.class); startActivity(intent); } }); }}
2、
startActivityForResult(intent,requestCode);
onActivityResult(int requestCode,int resultCode,Intent data)
setResult(resultCode,data);
查看代碼:
FActivity.java
public class FActivity extends AppCompatActivity { private Button bt_first; private Button bt_second; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.factivity); /*** * 點擊第一個按鈕實現跳轉頁面 */ bt_first= (Button) findViewById(R.id.bt1); bt_first.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(); intent.setClass (FActivity.this,SActivity.class); startActivity(intent); } }); /*** * 通過startActivityForresult實現 */ bt_second= (Button) findViewById(R.id.bt2); bt_second.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent().setClass(FActivity.this,SActivity.class); /*** * 第二個參數是請求的標示 */ startActivityForResult(intent,1); } }); tv= (TextView) findViewById(R.id.text1); } /*** * 通過startActivityForresult實現,接收返回資料的方法 * 一、請求的標示 * 二、第二個頁面返回的標示 * 三、第二個頁面傳回的資料 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //判斷是否滿足條件來進行回傳資料 if(requestCode==1&&resultCode==2){ String content=data.getStringExtra("intent"); tv.setText(content); } }}
SActivity.java
public class SActivity extends AppCompatActivity{ private Button bt; private String content="Hello~!"; @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sactivity); /*** * 第二個頁面給第一個頁面回傳資料 * 回傳給第一個頁面的實際上是一個intent對象 */ bt= (Button) findViewById(R.id.bt3); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(); //建立回傳對象 intent.putExtra("intent",content); setResult(2,intent); //結束當前頁面 finish(); } }); }}
App的簽名和打包:
1、為了保證每個應用開發人員的合法。
2、防止別人通過相同的Package Name來混淆替換已經安裝的程式,從而出現一些惡意篡改
3、保證我們每次發布的版本的一致性(如自動更新不會因為版本不一樣而無法安裝)
Android中使用Intent實現介面跳轉