3

我将以一个示例开始......如果您转至设置>应用程序>管理应用程序,将打开一个新屏幕,其中包含已安装应用程序的列表:如果您单击列表中的任何应用程序,它将打开一个包含应用程序信息的新屏幕。我应该为每个屏幕创建一个活动吗?

那么,我的应用程序的一些设置必须通过列表来管理,并且此列表应该像上面的示例一样。我已经创建了一个带有一些类别的PreferenceActivity,每个类别都有一些项目:当我点击其中一个项目时,我希望它打开一个新的屏幕,新数据放置在列表中,就像上面例子的应用。此外,当我点击此列表的任何条目时,它将打开一个新的屏幕以设置一些数据。

我该如何继续?我应该为每个屏幕创建一个活动吗?

+1

一旦你感觉到了这一点,你也应该看看片段,它们在较早版本的操作系统中通过支持库支持,例如2.3可以使用单个活动模型,但也可以利用片段3.0+现在不要混淆视听:-)但是当它开始凝胶时,看看它吧 – Idistic 2012-04-26 00:00:08

+0

按照我承诺的做了编辑! – Carnal 2012-04-27 07:14:36

+0

@Carnal:谢谢你的例子! – enzom83 2012-04-27 08:47:41

回答

1

请参阅...如果用户想要从某个点返回到之前的位置......如果您为他们每个人创建了单独的活动......目前的活动将弹出堆栈...让前一个活动被显示......如果你正在改变每个新屏幕的列表内容......而不是创建新的活动......那么用户很难回来......你应该一次又一次地改变适配器的内容.. 所以我认为..为每个屏幕创建单独的活动更好..(和你可以使用相同的[任何自定义布局,如果你有]布局文件的所有活动..)

2

这可以说是最好的办法,至少如果你没有在做一个向导风格的活动。

使用ListActivity显示您的列表,并使用intents将数据传入和传出此活动。

2

我能够在工作中实现这一点,我现在头脑中不记得我是如何实现它的,很久以前。但是,如果没有人为您提供一个好的答案,我会在明天发布,但我记得将一个偏好设置为按钮,然后添加一个preferenceClickListener以便在点击时打开一个新的偏好设置屏幕。但是就像我说的,如果你没有得到满意的答案,明天我会为你发布。

祝你好运!

UPDATE:

?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory 
    android:title="Personal" 
    android:key="personal_category"> 
    <Preference 
     android:key="birth" 
     android:title="Birth" 
     android:summary="Choose your birthday"/> 
    <PreferenceScreen 
     android:key="height_imp" 
     android:title="Height" 
     android:summary="Enter your height"> 
     <EditTextPreference 
      android:key="foot" 
      android:title="Foot" 
      android:summary="foot" 
      android:numeric="integer" 
      android:dialogTitle="Foot"/> 
     <EditTextPreference 
      android:key="inch" 
      android:title="Inch" 
      android:summary="inch" 
      android:numeric="integer" 
      android:dialogTitle="Inch"/> 
    </PreferenceScreen> 
    <EditTextPreference 
     android:key="weight" 
     android:title="Weight" 
     android:summary="Enter your weight" 
     android:numeric="integer" 
     android:dialogTitle="Weight"/>  
</PreferenceCategory> 
</PreferenceScreen> 

这就是它!当你点击它时,它会带你到第二个PreferenceScreen等等,最后当你需要定制你的布局时,你需要打开一个活动。 然后,您可以使用偏好并添加onPreferenceClick:

@Override 
public boolean onPreferenceClick(Preference preference) { 
    if(preference == birth){ 
     startActivity(new Intent(getBaseContext(), Birth.class)); 
    } 
    if(preference == height_imp){ 
     PreferenceScreen a = (PreferenceScreen) preference; 
     a.getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE)); 
     return false; 
    } 
    return true; 
} 

如果您需要更改背景或别的东西与preferenceScreen,然后添加一个preferenceClickListener还有:height_imp = (PreferenceScreen)getPreferenceScreen().findPreference("height_imp"); height_imp.setOnPreferenceClickListener(this);

3

的Android创建这种方式,根据文档“一项活动是用户可以完成的一项单一的,重点突出的事情”,所以是的,您应该为每个屏幕开展一项活动。 随着Honeycomb与Fragments的推出,这一点有所改变,但如果您没有开发平板电脑,您应该保持一个页面,一个Android的活动心态。

+0

我使用Android 2.3 – enzom83 2012-04-25 19:27:17

3

一般来说,你必须通过其他每个活动呼叫,主叫方被压入堆栈(除非调用活动要求的被删除),并进入休眠,直到它返回

基本上你创建活动的AN意图启动活动B,您可以使用startActivityForResult与在意图例演员传递数据:How to pass data between activities

当按下后退按钮,然后以前的活动再次变得活跃和结果处理您设置可以得到任何回报数据。

如果您想提供看起来更好并且表现更好的平板电脑支持,您也可以查看支持API中的片段。

相关问题