从preference报头开始活动 [英] Start activity from preference-headers

查看:138
本文介绍了从preference报头开始活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实施n层preferenceActivities 第一层preferenceActivity从preference报头加载。

第一头创建的设置,这是preferenceFragment片段。第二是一个浏览器的活动(第二距离developer.android.com一个例子),其打开指定地址。第三个我想那也将从preference报头装preferenceAtivity一个新的水平。

一两项工作正常,但第三崩溃,除了一个应用程序:

android.content.ActivityNotFoundException:无活动处理意向{行为= android.intent.action.VIEW DAT = com.mycompany.myapp.ui.My preferenceActivity}

我的preferenceActivity申报清单文件中。大概声明main_headers.xml活动是错的,但我没有发现任何引用提示如何做到这一点是正确的。试了一些变化,他们没有工作。

例如我用:<一href="http://developer.android.com/reference/android/$p$pference/$p$pferenceActivity.html">http://developer.android.com/reference/android/$p$pference/$p$pferenceActivity.html

有什么想法,为什么它不工作对我来说还是怎么下preferenceActivity可以被称为? 基本上,我只需要开始从头部的活动,这应该是很简单的,但我失去了一些东西。

 公共类MySettings扩展preferenceActivity
{
    @覆盖
    公共无效onBuildHeaders(名单&LT;头&GT;目标)
    {
        loadHeadersFromResource(R.xml.main_headers,目标);
    }
}
 

main_headers.xml:

 &LT; XML版本=1.0编码=UTF-8&GT?;
&LT; preference报头
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android&GT;

    &LT;头安卓标题=自定义设置
        机器人:片段=com.mycompany.myapp.ui.SettingsFragment/&GT;

    &LT;头安卓标题=意图
        机器人:总结=启动的意图。&GT;
        &LT;意图安卓行动=android.intent.action.VIEW
                机器人:数据=htt​​p://www.android.com/&GT;
    &LT; /头&GT;

    &LT;头安卓标题=另一个preference活动&GT;
        &LT;意图安卓行动=android.intent.action.VIEW
            机器人:数据=com.mycompany.myapp.ui.My preferenceActivity/&GT;
    &LT; /头&GT;
&LT; / preference报头&GT;
 

解决方案

如果你想从你的第三个preference启动一个明确的活动,然后做到这一点:

 &LT;意向安卓targetPackage =com.mycompany.myapp
        机器人:targetClass =com.mycompany.myapp.ui.My preferenceActivity/&GT;
 

I'm implementing n-layer PreferenceActivities 1st layer PreferenceActivity is loaded from preference-headers.

First header creates fragment of settings which is a PreferenceFragment. Second is a browser activity (2nd is an example from developer.android.com) which opens specified Url. The third one I want to be a next level of PreferenceAtivity that also will be loaded from preference-headers.

First two work fine but 3rd is crashing an app with the exception:

"android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=com.mycompany.myapp.ui.MyPreferenceActivity} "

MyPreferenceActivity declared in the manifest file. Probably declaration of activity in main_headers.xml is wrong, but I didn't find in references any tip how to do it correct. Tried several variations, they didn't work.

Example I used: http://developer.android.com/reference/android/preference/PreferenceActivity.html

Any thoughts why it doesn't work for me or how the next PreferenceActivity can be called? Basically I just need to start an activity from header, that should be really simple but I'm missing something.

public class MySettings extends PreferenceActivity 
{
    @Override
    public void onBuildHeaders(List<Header> target) 
    {
        loadHeadersFromResource(R.xml.main_headers, target);
    }
}

main_headers.xml:

<?xml version="1.0" encoding="utf-8"?>
<preference-headers
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <header android:title="Custom Settings"
        android:fragment="com.mycompany.myapp.ui.SettingsFragment" />

    <header android:title="Intent"
        android:summary="Launches an Intent.">
        <intent android:action="android.intent.action.VIEW"
                android:data="http://www.android.com" />
    </header>

    <header android:title="Another Preference Activity">
        <intent android:action="android.intent.action.VIEW"
            android:data="com.mycompany.myapp.ui.MyPreferenceActivity" />
    </header>
</preference-headers>

解决方案

If you want to start an explicit Activity from your third preference then do this:

<intent android:targetPackage="com.mycompany.myapp"
        android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" />

这篇关于从preference报头开始活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆