当前位置:  编程技术>移动开发
本页文章导读:
    ▪与其说他片段交互        与其他片段交互   原文自:http://android.eoe.cn/topic/ui   Communicating with Other Fragments 为了重用Fragment UI组件,你应该将Fragment建立成完全独立,模块化并且定义了自己布局和行为的组件。一旦你.........
    ▪ 怎么Debug签名的APK        如何Debug签名的APK 1.   把工程导入Eclipse中 2.   adb connect 设备 3.    打成apk包,并签名,然后,安装到设备上 4.    在DDMS中,找到要debug的应用,点击debug图标,如下图:   5.    好了,现.........
    ▪ 输入法 小结-1       输入法 总结-1 <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:name=".application.InputApplication"        .........

[1]与其说他片段交互
    来源: 互联网  发布时间: 2014-02-18
与其他片段交互

 

原文自:http://android.eoe.cn/topic/ui

 

Communicating with Other Fragments

为了重用Fragment UI组件,你应该将Fragment建立成完全独立,模块化并且定义了自己布局和行为的组件。一旦你定义了这些可重用的Fragment,你可以通过activity,应用程序逻辑使它们关联,交互以组成一个整体复合型UI。
通常情况下,你希望一个Fragment可以与另一个交互,比如基于用户事件去修改内容。所有Fragment到Fragment的交互都是通过相关联的activity来做的。两个fragment应该从不直接交互。

定义一个接口 Define an Interface

为了允许Fragment与它的activity交互,你可以在fragment类中定义一个接口并且在activity中实现它。fragment可以在生命周期中的onAttach()方法获取接口的实现并调用接口的方法与activity交互。
以下是fragment到activity的交互例子:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class HeadlinesFragment extends ListFragment {
    OnHeadlineSelectedListener mCallback;

    // Container Activity must implement this interface
    public interface OnHeadlineSelectedListener {
        public void onArticleSelected(int position);
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        // This makes sure that the container activity has implemented
        // the callback interface. If not, it throws an exception
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }

    ...
}

现在fragment可以使用OnHeadlineSelectedListener的实例mCallback调用onArticleSelected()方法(或者其他接口内的方法)提供信息给activity了。
例如,当用户点击list item(list子项)时就会调用下面在fragment的方法。fragment使用回调接口提供事件到父的activity。

1
2
3
4
5
@Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        // Send the event to the host activity
        mCallback.onArticleSelected(position);
    }
实现接口 Implement the Interface

为了接收来自fragment的事件回调,包含fragment的activity(你需要用来与fragment交互的activity)必须实现定义在fragment类中的接口。
例如:下面这个activity就实现了上一例子中的接口:

1
2
3
4
5
6
7
8
9
public static class MainActivity extends Activity
        implements HeadlinesFragment.OnHeadlineSelectedListener{
    ...

    public void onArticleSelected(Uri articleUri) {
        // The user selected the headline of an article from the HeadlinesFragment
        // Do something here to display that article
    }
}
Deliver a Message to a Fragment

宿主activity可以使用findFragmentById()方法获取Fragment实例,然后直接调用fragment的公共方法提供信息给fragment。

例如,假设在上面显示的那个activity中可能包含另外一个fragment,并且用来显示由上面那个回调方法返回的数据指定的项目。在这个案例中,这个activity可以从回调函数中获得信息并且传递给其他显示项目的fragment:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static class MainActivity extends Activity
        implements HeadlinesFragment.OnHeadlineSelectedListener{
    ...

    public void onArticleSelected(int position) {
        // The user selected the headline of an article from the HeadlinesFragment
        // Do something here to display that article

        ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.article_fragment);

        if (articleFrag != null) {
            // If article frag is available, we're in two-pane layout...

            // Call a method in the ArticleFragment to update its content
            articleFrag.updateArticleView(position);
        } else {
            // Otherwise, we're in the one-pane layout and must swap frags...

            // Create fragment and give it an argument for the selected article
            ArticleFragment newFragment = new ArticleFragment();
            Bundle args = new Bundle();
            args.putInt(ArticleFragment.ARG_POSITION, position);
            newFragment.setArguments(args);

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            // Replace whatever is in the fragment_container view with this fragment,
            // and add the transaction to the back stack so the user can navigate back
            transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);

            // Commit the transaction
            transaction.commit();
        }
    }
}
 

    
[2] 怎么Debug签名的APK
    来源: 互联网  发布时间: 2014-02-18
如何Debug签名的APK

1.   把工程导入Eclipse中

2.   adb connect 设备

3.    打成apk包,并签名,然后,安装到设备上

4.    在DDMS中,找到要debug的应用,点击debug图标,如下图:



 

5.    好了,现在,到我们的工程里面打断点,开始debug吧。

6.     注意事项:

1)        只能使用一个adb连接该设备

2)              安装的apk的代码必须和工程的代码完全一致


    
[3] 输入法 小结-1
    来源: 互联网  发布时间: 2014-02-18
输入法 总结-1
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name=".application.InputApplication"
        android:theme="@style/AppTheme" >

        <!-- 标识输入法程序 -->
        <service
            android:label="@string/ime_name"
            android:name="com.example.input.activity.InputActivity"
            android:permission="android.permission.BIND_INPUT_METHOD" >
            <intent-filter >
                <action android:name="android.view.InputMethod" />
            </intent-filter>

            <meta-data
                android:name="android.view.im"
                android:resource="@xml/method" />
        </service>
        <service android:name=".service.InputService" >
        </service>

        <activity
            android:label="@string/app_name"
            android:name="com.example.input.activity.MainActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

method.xml
<input-method xmlns:android="http://schemas.android.com/apk/res/android"
    android:settingsActivity=" com.example.input.activity.SettingActivity" />

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3