Android studio 實作界面跳轉
标簽: 教育
主要大概實作的就是點選主界面的按鈕可以跳轉到指定界面
實作向10086打電話 發短信以及打開網頁打開地圖等功能
1.首先在activitiy_main.xml中設計主界面
代碼如下:<?xml version="1.0" encoding="utf-8"?>
界面實作結果:

2.接着建立一個activity_second.xml作為跳轉界面
界面代碼如下:
<?xml version="1.0" encoding="utf-8"?>
界面實作結果如下:
3. 接着在MainActivity中編寫界面跳轉功能
代碼如下:
package com.example.internetdemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.AlarmClock;
import android.view.View;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view) {
switch (view.getId()){
case R.id.btn_second:
//根據Intent的action啟動Activity
Intent intent=new Intent();
intent.setAction("com.example.SECOND_ACTIVITY");
startActivity(intent);
break;
case R.id.btn_call:
//根據Intent的Action啟動Activity
callPhone();
intent= new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+"10086"));
startActivity(intent);
break;
case R.id.btn_message:
sendMessage();
break;
case R.id.btn_browser:
openBrowser();
break;
case R.id.btn_map:
openMap();
break;
case R.id.btn_alarm:
creatAlarm();
break;
case R.id.btn_textView:
jumpSecond();
break;
}
}
private void jumpSecond() {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("班級","軟體1811");
//2.通過Bundle傳遞複雜類型:對象、對象集合
Bundle bundle = new Bundle();
bundle.putSerializable("user",new User("張三","13801234567"));
intent.putExtras(bundle);
//3.通過Bunle傳遞對象集合
ArrayList<User> users=new ArrayList<User>();
users.add(new User("a","13092746578"));
users.add(new User("b","13065986578"));
users.add(new User("c","13092741126"));
bundle.putSerializable("users",users);
intent.putExtras(bundle);
startActivityForResult(intent,101);
}
private void callPhone() {
Intent intent= new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+"10086"));
//檢查運作時權限,若沒有則申請,然後在毀掉函數中完成打電話功能
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},
1);
}else{
if(intent.resolveActivity(getPackageManager()) !=null){
startActivity(intent);
}
}
}
//鬧鐘需要設定權限
private void creatAlarm() {
Intent intent=new Intent(AlarmClock.ACTION_SET_ALARM)
.putExtra(AlarmClock.EXTRA_MESSAGE,“起床”)
.putExtra(AlarmClock.EXTRA_HOUR,6)
.putExtra(AlarmClock.EXTRA_MINUTES,0);
if(intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}
}
private void openMap() {
Uri uri=Uri.parse("geo:0?q=1600+Amphitheatre_Parkway,+Mountain+View,+California");
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
}
private void openBrowser() {
Intent intent= new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
private void sendMessage() {
Intent intent = new Intent(Intent.ACTION_SENDTO) ;
intent.setData (Uri.parse ("smsto:10086"));
intent.putExtra("sms_body","10086,你好");
startActivity(intent);
}
}
4.接着在SecondActivity中編寫跳轉之後的代碼
代碼如下:
package com.example.internetdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
private TextView tvResult;
private EditText etPhone;
private User user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tvResult = findViewById(R.id.btn_textView);
etPhone=findViewById(R.id.et_phone);
Intent intent = getIntent();
String classmate = intent.getStringExtra("班級");
String result = classmate;
Bundle extras = intent.getExtras();
if(extras!=null){
User user=(User) extras.getSerializable("user");
if(user!=null){
result += ","+user.toString();
tvResult.setText(user.getName());
etPhone.setText(user.getPhone());
}
}
//通過按鈕的事件監聽器
Button btnConfirm=findViewById(R.id.confirm);
btnConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//擷取修改後的手機号,回傳給MainActivity
String phone=etPhone.getText().toString();
if(user !=null){
user.setPhone(phone);
Intent intent=new Intent();
Bundle bundle=new Bundle();
bundle.putSerializable("user",user);
setResult(RESULT_OK,intent);
SecondActivity.this.finish();
}
}
});
tvResult.setText(result);
}
}
5.當然我們還需要建一個User的java類
User代碼如下:
package com.example.internetdemo;
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
private String phone;
public User(){
}
public User(String name,String phone){
this.name=name;
this.phone=phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
6.最後我們就可以在模拟器中運作啦
點選發短信會出現這樣的界面
點選打電話會出現這樣的界面
這個我就不一 一示範啦 簡單舉兩個例子
這樣我們就簡單完成一個小功能啦!!