问题很简单,如果我将一个对象设为parcelable,并将其放入一个包中并使用该包创建一个片段.对象是否被克隆或被引用.
上下文.
我有一个在ArrayList中存储/引用的对象.取决于ArrayList中的对象类型(使用多态).我创建了一个适合处理它的片段.
我还需要将此对象传递给片段.该片段在自定义视图寻呼机中使用.我不希望有重复的对象,在我看来,可以克隆的克隆对象.
另一种方法是传递ArrayList中对象的索引.然后使用getActivity().myList.get(传递给Integer)从片段中获取对arraylist的引用.但它对我来说似乎不太安全(ArrayList内容可能会改变,虽然我只是删除所有内容并重新开始).我还读过,你应该避免将参数传递给片段构造函数,因为它可以使用默认的no-args构造函数重新创建.
(虽然我正在销毁任何重新创建的片段,因为重新连接到正确的视图有一些奇怪的问题,另一篇文章).
新的子问题:有没有办法通过引用片段传递值?
尝试使用字符串限定符在清单文件中设置方向
android:screenOrientation="@string/orientation"
Run Code Online (Sandbox Code Playgroud)
适用于4.0 asus平板电脑,但在2.1野火和4.1 Galaxy S上都失败了.问题实际上是链接到资源,如果输入肖像,则可以使用.
我试过更改平板电脑中使用的限定符来测试手机.这意味着所有设备都使用完全相同的代码,资源和布局.所以它不能拼写错误或构建问题.但它仍然在手机而不是平板电脑上失败了.这似乎是android中的另一个错误.
给出下面的错误,logcat中没有任何内容
Installation error: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Please check logcat output for more details.
Launch canceled!
Run Code Online (Sandbox Code Playgroud)
清单部分
<activity
android:name=".MainActivity"
android:screenOrientation="@string/orientation"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我知道我可以以编程方式完成.但这是野火的另一个问题,而不是立即重启.相反,它等待视图设置等.这在其他设备中不会发生.
谷歌搜索并发现其他一些人使用这些方法,但他们似乎没有发现任何问题. http://capdroid.wordpress.com/2012/07/21/different-screen-orientation-on-different-screen-size
谢谢