1. 程式人生 > 實用技巧 >安卓開發之intent

安卓開發之intent

兩個活動之間的跳轉要通過intent來進行,intent跳轉分為隱式的和顯示的。

首先xml中定義Button,通過按下按鈕實現回撥,在回撥函式中進行相應intent設定。

<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="send"
android:onClick="sendmessage"
/>

回撥函式中:

顯示呼叫:

public void sendmessage(View view)
{
//法一:
Intent intent=new Intent(this,SecondActivity.class);
startActivity(intent);


//法二:
Intent intent=new Intent();
intent.setClassName(this,"com.example.helloworld.SecondActivity"); //第二個引數為包名中相應的activity
this.startActivity(intent);

//法三:
Intent intent=new Intent();
ComponentName componentName=new ComponentName(this,SecondActivity.class);
intent.setComponent(componentName);
startActivity(intent);

//法四:
Intent intent=new Intent();
ComponentName componentName=new ComponentName(this,"com.example.helloworld.SecondActivity");
intent.setComponent(componentName);
startActivity(intent);
}


//隱式呼叫:
public void sendmessage(View view)
{
Intent intent=new Intent();

intent.setAction("second.activity");
startActivity(intent);
}

AndroidMainifest.xml中:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="second.activity" />
        <category android:name="android.intent.category.DEFAULT" /> //如果這裡也寫了LAUNCHAR,那麼使用者可以直接訪問第二個活動,也就是手機上會有兩個應用。
</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>




實現了活動間的跳轉,如果想要在兩個活動間傳送資料,那麼要用到Bundle:


以顯示呼叫的一種跳轉方法為例:


現有兩個活動:activity1和activity2,實現activity1中的字串傳送到activity2
在activity1中:
    <EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</EditText>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onclick"
android:text="send"
></Button>

回撥函式中:

public void onclick(View view)
{
EditText s=findViewById(R.id.edit);

Intent intent=new Intent();
ComponentName componentName=new ComponentName(this,Main4Activity.class);
intent.setComponent(componentName);

Bundle bundle=new Bundle();
bundle.putString(s.getText().toString());
intent.putExtras(bundle);

startActivity(intent);
}



在activity2中:
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
></TextView>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);

TextView s=findViewById(R.id.text);
Bundle bundle=this.getIntent().getExtras();
String str=bundle.getString("text");

s.setText(str);

}