Android電話本實作
- 需求
- 效果
- 添加聯系人
- 洗掉聯系人
- 查詢聯系人
- 修改聯系人
- 撥打電
- 部分實作代碼
- 資料庫
- 添加聯系人
- 布局
- 限制添加長度
- 添加頁面
- 布局
- 代碼
- 洗掉聯系人
- 查詢聯系人
- 修改聯系人和撥打電話頁面
- 主頁面
- 布局
- 代碼
- 完整專案鏈接
完整專案下載鏈接
需求
可以實作聯系人的增刪改查
可以實作電話的撥打
采用內置資料庫
效果
添加聯系人

洗掉聯系人

查詢聯系人

修改聯系人

撥打電

部分實作代碼
資料庫
//創建資料庫
public class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context context)
{
super(context,"itcast.db",null,2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),tels INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
添加聯系人
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/back7"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
android:paddingTop="20dp"
android:background="#99404348"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="AddressBook"
android:textColor="#FFFFFF"
android:textSize="18sp"/>-
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingTop="20dp"
android:background="#99000000">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:layout_gravity="center"
android:layout_marginRight="50dp"
android:layout_marginLeft="50dp"
android:textColor="#FFFFFF"
android:textColorHint="#9F9FA0"
android:hint="Name"/>
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="#83738F"
android:layout_marginRight="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"></View>
<EditText
android:id="@+id/etNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:layout_gravity="center"
android:hint="Number"
android:textColor="#FFFFFF"
android:textColorHint="#9F9FA0"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
android:paddingTop="20dp"
android:background="#99404348"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="請輸入姓名和電話號碼"
android:textColor="#DDDDDD"
android:textSize="15sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="?青素"
android:textColor="#FFFFFF"
android:textSize="15sp"/>
</LinearLayout>
<com.spark.submitbutton.SubmitButton
android:id="@+id/btnSave"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:sub_btn_tick_color="@color/white"
android:text="保存聯系人"
android:textSize="15sp"
android:textColor="@color/white"
app:sub_btn_duration="3000" />
</LinearLayout>
</LinearLayout>
限制添加長度
import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.Toast;
//保證電話號碼不超過11位 姓名不超過8個字符
public class MaxLengthWatcher implements TextWatcher {
private int maxLen = 0;
private EditText editText = null;
private Context context=null;
public MaxLengthWatcher(int maxLen, EditText editText, Context context) {
this.maxLen = maxLen;
this.editText = editText;
this.context=context;
}
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Editable editable = editText.getText();
int len = editable.length();
if(len > maxLen)
{
int selEndIndex = Selection.getSelectionEnd(editable);
String str = editable.toString();
//截取新字串
String newStr = str.substring(0,maxLen);
editText.setText(newStr);
editable = editText.getText();
//新字串的長度
int newLen = editable.length();
//舊游標位置超過字串長度
if(selEndIndex > newLen)
{
selEndIndex = editable.length();
//防止吐司出現應用程式名稱提示
Toast toast=Toast.makeText(context,"不能超過"+newLen+"字符長度",Toast.LENGTH_LONG);
toast.setText("不能超過"+newLen+"字符長度");
toast.show();
}
//設定新游標所在的位置
Selection.setSelection(editable, selEndIndex);
}
}
}
添加頁面
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/back7"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
android:paddingTop="20dp"
android:background="#99404348"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="AddressBook"
android:textColor="#FFFFFF"
android:textSize="18sp"/>-
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingTop="20dp"
android:background="#99000000">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:layout_gravity="center"
android:layout_marginRight="50dp"
android:layout_marginLeft="50dp"
android:textColor="#FFFFFF"
android:textColorHint="#9F9FA0"
android:hint="Name"/>
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="#83738F"
android:layout_marginRight="40dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"></View>
<EditText
android:id="@+id/etNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:layout_gravity="center"
android:hint="Number"
android:textColor="#FFFFFF"
android:textColorHint="#9F9FA0"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="30dp"
android:paddingTop="20dp"
android:background="#99404348"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="請輸入姓名和電話號碼"
android:textColor="#DDDDDD"
android:textSize="15sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="?青素"
android:textColor="#FFFFFF"
android:textSize="15sp"/>
</LinearLayout>
<com.spark.submitbutton.SubmitButton
android:id="@+id/btnSave"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:sub_btn_tick_color="@color/white"
android:text="保存聯系人"
android:textSize="15sp"
android:textColor="@color/white"
app:sub_btn_duration="3000" />
</LinearLayout>
</LinearLayout>
代碼
import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.spark.submitbutton.SubmitButton;
public class Tels_new extends AppCompatActivity {
private EditText etNameOne,etTelNumberOne;
private SubmitButton saveABook;
private String name,phone;
private MyHelper myHelper;
private SQLiteDatabase db;
private ContentValues values;
private int WRITE_EXTERNAL_STORAGE_REQUEST_CODE=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tels_new);
//隱藏Toolbar的回傳箭頭
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
myHelper=new MyHelper(this);
etNameOne=(EditText)findViewById(R.id.etName);
etTelNumberOne=(EditText)findViewById(R.id.etNumber);
saveABook=(SubmitButton) findViewById(R.id.btnSave);
//監測
etNameOne.addTextChangedListener(new MaxLengthWatcher(8,etNameOne,this));
etTelNumberOne.addTextChangedListener(new MaxLengthWatcher(11,etTelNumberOne,this));
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//申請WRITE_EXTERNAL_STORAGE權限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_EXTERNAL_STORAGE_REQUEST_CODE); }
//保存按鈕 點擊保存
saveABook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SaveABook();
}
});
}
@Override
//權限獲取回呼
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
{
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode,grantResults);
}
//自己用肯定給 先放起來 啥也不干
private void doNext(int requestCode, int[] grantResults)
{
if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE)
{
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
}
}
//保存聯系人
void SaveABook(){
name=etNameOne.getText().toString();
phone=etTelNumberOne.getText().toString();
db=myHelper.getWritableDatabase();
values=new ContentValues();
values.put("name",name);
values.put("tels",phone);
db.insert("information",null,values);
db.close();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate( R.menu.back, menu);
return true;
}
//使用選單回傳上一級
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId()==R.id.action_settings1) {
Intent intent = new Intent(Tels_new.this, MainActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
}
洗掉聯系人
//點擊事件 并傳入引數
mlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, Change.class);
intent.putExtra("nameInt",names.get(position));
intent.putExtra("telInt",tels.get(position));
startActivity(intent);
}
});
//長按事件 洗掉資料
mlistview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
//長按洗掉
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setPositiveButton("洗掉", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
db=myHelper.getWritableDatabase();
db.delete("information","name=?",new String[]{names.get(arg2)});
db.close();
names.remove(arg2);
tels.remove(arg2);
madapter.notifyDataSetChanged();
}
});
builder.create().show();
return true; // 這里一定要改為true,代表長按自己消費掉了,若為false,觸發長按事件的同時,還會觸發點擊事件</span></strong>
}
});
}
查詢聯系人
//完成搜索功能
searchBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myHelper=new MyHelper(MainActivity.this);
db=myHelper.getWritableDatabase();
names.clear ();
tels.clear();
Cursor cursor=db.query("information",null,"name=?",new String[]{searchEt.getText().toString()},null,null,null);
if(cursor.getCount()!=0)
{cursor.moveToFirst();
names.add(cursor.getString(1));
tels.add(cursor.getString(2));
while(cursor.moveToNext())
{
names.add(cursor.getString(1));
tels.add(cursor.getString(2));}
}else{
cursor=db.query("information",null,null,null,null,null,null);
Toast toast=Toast.makeText(MainActivity.this,"抱歉,未發現該聯系人!",Toast.LENGTH_LONG);
toast.setText("抱歉,未發現該聯系人!");
toast.show();
}
madapter.notifyDataSetChanged();
cursor.close();
db.close();}
});
修改聯系人和撥打電話頁面
import android.Manifest;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class Change extends AppCompatActivity {
private EditText nameTwo,numberTwo;
private ImageView modify,call;
private MyHelper myHelper;
private SQLiteDatabase db;
private ContentValues values;
private String name;
private String telnumber;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_change);
//隱藏Toolbar的回傳箭頭
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
myHelper=new MyHelper(this);
//接收傳入的電話資料
Intent intent=getIntent();
name=intent.getStringExtra("nameInt");
telnumber=intent.getStringExtra("telInt");
nameTwo=(EditText)findViewById(R.id.etNameTwo);
numberTwo=(EditText)findViewById(R.id.etNumberTwo);
nameTwo.setText(name);
numberTwo.setText(telnumber);
//監測文本長度
nameTwo.addTextChangedListener(new MaxLengthWatcher(8,nameTwo,this));
numberTwo.addTextChangedListener(new MaxLengthWatcher(11,numberTwo,this));
//兩個圖片按鈕
modify=findViewById(R.id.imVmodify);
call=findViewById(R.id.imVcall);
modify.setClickable(true);//激活按鈕
call.setClickable(true);
//修改
modify.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
db=myHelper.getWritableDatabase();//初始化資料庫
values=new ContentValues();
values.put("name",nameTwo.getText().toString());
values.put("tels",numberTwo.getText().toString());
db.update("information",values,"name=?",new String[]{name});
//防止吐司出現應用程式名稱提示
Toast toast=Toast.makeText(Change.this,"修改成功",Toast.LENGTH_LONG);
toast.setText("修改成功");
toast.show();
db.close();
}
});
//撥打
call.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
if(ContextCompat.checkSelfPermission(Change.this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(Change.this,new String[]{Manifest.permission.CALL_PHONE},1);
}else {
}
//撥打電話
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);//設定活動型別
intent.setData(Uri.parse("tel:"+telnumber));//設定資料
startActivity(intent);
}
});
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate( R.menu.back, menu);
return true;
}
//使用選單回傳上一級
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId()==R.id.action_settings1) {
Intent intent = new Intent(Change.this, MainActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
}
主頁面
布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/back3"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="5dp">
<EditText
android:id="@+id/etSearch"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="5"
android:background="#ffffff"
android:ems="10"
android:gravity="center"
android:hint="搜索聯系人"
android:inputType="textPersonName"
android:textSize="25sp" />
<ImageView
android:id="@+id/imgsearch"
android:layout_marginTop="3dp"
android:layout_width="50dp"
android:layout_height="39dp"
app:srcCompat="@android:drawable/ic_menu_search" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_centerVertical="true"
android:gravity="center"
android:layout_marginEnd="20dp"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
代碼
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ListView mlistview;
private ImageView searchBt;
private EditText searchEt;
private MyHelper myHelper;
private SQLiteDatabase db;
private ArrayList<String> names=new ArrayList<>();
private ArrayList<String> tels=new ArrayList<>();
private MyBaseAdapter madapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化listview
mlistview=(ListView) findViewById(R.id.listView);
madapter=new MyBaseAdapter();
mlistview.setAdapter(madapter);
myHelper=new MyHelper(this);
db=myHelper.getWritableDatabase();
//查詢所有資料 顯示頁面
Cursor cursor=db.query("information",null,null,null,null,null,null);
if(cursor.getCount()==0)
{
//防止吐司出現應用程式名稱提示
Toast toast=Toast.makeText(MainActivity.this,"暫時沒有聯系人請添加!",Toast.LENGTH_LONG);
toast.setText("暫時沒有聯系人請添加!");
toast.show();
}else{
//第一個
cursor.moveToFirst();
names.add(cursor.getString(1));
tels.add(cursor.getString(2));
//下一個直到沒有
while(cursor.moveToNext())
{
names.add(cursor.getString(1));
tels.add(cursor.getString(2));
}
madapter.notifyDataSetChanged();//動態更新
cursor.close();
db.close();
}
searchBt=(ImageView)findViewById(R.id.imgsearch);
searchEt=(EditText)findViewById(R.id.etSearch);
searchEt.addTextChangedListener(new MaxLengthWatcher(8,searchEt,this));
searchBt.setClickable(true);//激活按鈕
//完成搜索功能
searchBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myHelper=new MyHelper(MainActivity.this);
db=myHelper.getWritableDatabase();
names.clear ();
tels.clear();
Cursor cursor=db.query("information",null,"name=?",new String[]{searchEt.getText().toString()},null,null,null);
if(cursor.getCount()!=0)
{cursor.moveToFirst();
names.add(cursor.getString(1));
tels.add(cursor.getString(2));
while(cursor.moveToNext())
{
names.add(cursor.getString(1));
tels.add(cursor.getString(2));}
}else{
cursor=db.query("information",null,null,null,null,null,null);
Toast toast=Toast.makeText(MainActivity.this,"抱歉,未發現該聯系人!",Toast.LENGTH_LONG);
toast.setText("抱歉,未發現該聯系人!");
toast.show();
}
madapter.notifyDataSetChanged();
cursor.close();
db.close();}
});
//點擊事件 并傳入引數
mlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, Change.class);
intent.putExtra("nameInt",names.get(position));
intent.putExtra("telInt",tels.get(position));
startActivity(intent);
}
});
//長按事件 洗掉資料
mlistview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
//長按洗掉
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setPositiveButton("洗掉", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
db=myHelper.getWritableDatabase();
db.delete("information","name=?",new String[]{names.get(arg2)});
db.close();
names.remove(arg2);
tels.remove(arg2);
madapter.notifyDataSetChanged();
}
});
builder.create().show();
return true; // 這里一定要改為true,代表長按自己消費掉了,若為false,觸發長按事件的同時,還會觸發點擊事件</span></strong>
}
});
}
//配接器創建
class MyBaseAdapter extends BaseAdapter{
@Override
public int getCount() {
return names.size();
}
@Override
public Object getItem(int position) {
return names.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
//讀取資料并顯示
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(MainActivity.this,R.layout.tel,null);
TextView mtextView=(TextView) view.findViewById(R.id.textView);
mtextView.setText(" "+names.get(position)+" : "+tels.get(position));
return view;
}
}
@Override
//創建選單
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate( R.menu.main , menu);
return true;
}
//跳轉新建聯系人頁面
public boolean onOptionsItemSelected(MenuItem item)
{
if(item.getItemId()==R.id.action_settings) {
Intent intent = new Intent(MainActivity.this,Tels_new.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
}
完整專案鏈接
完整專案下載鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/306274.html
標籤:其他
