Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 【Android】19.0 第19章 前面章節的代碼優化及本章示例主界面,android19.0

【Android】19.0 第19章 前面章節的代碼優化及本章示例主界面,android19.0

編輯:關於android開發

【Android】19.0 第19章 前面章節的代碼優化及本章示例主界面,android19.0


分類:C#、Android、VS2015;

創建日期:2016-03-05

一、簡介

這一章我們介紹“共享存儲和內容提供程序”的基本用法。

二、先優化一下前面章節例子的代碼

在前面章節的示例中,並沒有對每個例子都添加IntentFilter,但是,當你按章節順序一步一步學到這一章時,你應該已經意識到下面的問題:

(1)讓每個例子都接收MainActivity的通知可能不合適,這是因為每個例子都是獨立的模塊,它和主界面(MainActivity)可能並沒有什麼直接的聯系。

(2)或許你還可能想在你設計的每個頁面中都嵌入一個共同的部分,而這個“共同”的部分只需要設計一次即可,就像WPF或者Web中你希望嵌入一個所有頁面都公用的某個一次性設計的模板一樣,此時就可以用Fragment來實現。

下面分別介紹如何解決這兩個問題。

1、問題1的解決辦法

解決第(1)個問題的辦法很簡單,就是在你每個獨立模塊的主Activity中都加入下面的過濾器特性聲明:

[IntentFilter(new[] { Android.Content.Intent.ActionMain }, Categories = new[] { ch.MyDemosCategory })]

具體實現見本章的示例。

其中,ch.MyDemosCategory 是在ch.cs文件中定義的一個常量。

由於數組中的每個常量都是字符串,所以代碼中的new[]也可以寫為new string[]。

另外,把MainActivity中創建的列表也保存到新添加的ch.cs這個文件中:

using System.Collections.Generic;
namespace MyDemos.SrcDemos
{
    public static class ch
    {
        //給整個項目定義一個完全一致的Intent過濾器分類
        public const string MyDemosCategory = "cnblogs.com.rainmj.MyDemos";

        public static IList<Chapter> CreateChItems()
        {
            IList<Chapter> chItems = new List<Chapter>();
            chItems.Add(new Chapter()
            {
                ChapterName = "第1章 開發環境安裝和配置",
                ChapterItems = new ChItem[]
                {
                    new ChItem {type=null, Title="本章無示例", Desc = "" },
                }
            });
            ……(後面的代碼不再粘貼了)
        }
     }
}

這樣一來,MainActivity.cs文件中的代碼就顯得干淨整潔了。

從這一章開始,後面章節示例的主界面中所有與MainActivity.cs相關的代碼也都將改為在ch.cs文件中添加。

2、問題2的解決辦法

前面我們講過,Android的布局元素和WPF相比,前者的Fragment元素就相當於後者的Frame元素。既然這樣,當然也可以單獨設計一個頁面,然後在需要時將該頁面作為一個Fragment來看待,把它嵌入到你希望嵌入的頁面中就行了。

下面是MyDemosFragment.axml文件的代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="www.cnblogs.com/rainmj/"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14dp"
        android:textColor="#FF267F00"
        android:text
        android:gravity="center_horizontal"
        android:paddingBottom="5dp" />
    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="#0000FF"
        android:layout_marginBottom="5dp" />
</LinearLayout>

下面是項目根目錄下MyDemosFragment.cs文件的代碼,該文件相當於MVC中的控制器,用於將MyDemosFragment.axml文件添加到引用它的頁面中:

using Android.App;
using Android.OS;
using Android.Views;

namespace MyDemos
{
    public class MyDemosFragment : Fragment
    {
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
        }

        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            return inflater.Inflate(Resource.Layout.MyDemosFragment, container, true);
        }
    }
}

完成上面的工作後,要將MyDemosFragment.axml作為另一個頁面的一部分,比如將其作為ch1901Main.axml文件的一部分,只需要在ch1901Main.axml文件中的合適位置中添加下面的代碼即可:

<fragment
    android:name="MyDemos.MyDemosFragment"
    android:tag="mydemos"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

從這一章張開始,後面的所有示例頁面都將嵌入這一部分。

另外,Main.axml文件也將相關的部分替換為這段代碼了。

三、本章示例主界面

1、運行截圖

2、ch.cs文件中與本章示例相關的代碼

chItems.Add(new Chapter()
{
    ChapterName = "第19章 共享存儲和內容提供程序",
    ChapterItems = new ChItem[]
    {
        new ChItem { type=typeof(ch1901MainActivity), Title="例19-1 SharedPreferences基本用法", Desc = "演示SharedPreferences的基本用法" },
        new ChItem { type=typeof(ch1902MainActivity), Title="例19-2 ShareActionProvider基本用法", Desc = "演示共享操作提供程序(ShareActionProvider)的基本用法" },
        new ChItem { type=typeof(ch1903MainActivity), Title="例19-3 ContentProvider基本用法", Desc = "演示內容提供程序(ContentProvider)及其相關類的基本用法" },
    }
});

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved