我已经看到了两个在应用程序中实例化新Fragment的一般实践:
Fragment newFragment = new MyFragment();
Run Code Online (Sandbox Code Playgroud)
和
Fragment newFragment = MyFragment.newInstance();
Run Code Online (Sandbox Code Playgroud)
第二个选项使用静态方法newInstance()
,通常包含以下方法.
public static Fragment newInstance()
{
MyFragment myFragment = new MyFragment();
return myFragment;
}
Run Code Online (Sandbox Code Playgroud)
起初,我认为主要的好处是我可以重载newInstance()方法以在创建Fragment的新实例时提供灵活性 - 但我也可以通过为Fragment创建重载构造函数来实现这一点.
我错过了什么?
一种方法比另一种方法有什么好处?还是只是好习惯?
我正在开发一款Android应用.我需要为我的应用程序构建一个URI来发出API请求.除非有另一种方法将变量放在URI中,否则这是我发现的最简单的方法.我发现你需要使用Uri.Builder
,但我不太清楚如何使用.我的网址是:
http://lapi.transitchicago.com/api/1.0/ttarrivals.aspx?key=[redacted]&mapid=value
Run Code Online (Sandbox Code Playgroud)
我的方案是http,权限是lapi.transitchicago.com
,路径是/api/1.0
,路径段是ttarrivals.aspx
,查询字符串是key=[redacted]&mapid=value
.
我的代码如下:
Intent intent = getIntent();
String value = intent.getExtras().getString("value");
Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
.authority("www.lapi.transitchicago.com")
.appendPath("api")
.appendPath("1.0")
.appendPath("ttarrivals.aspx")
.appendQueryParameter("key", "[redacted]")
.appendQueryParameter("mapid", value);
Run Code Online (Sandbox Code Playgroud)
我明白我能做到URI.add
,但我该如何将其整合到Uri.Builder
?我要补充的一切都像URI.add(scheme)
,URI.add(authority)
等等?或者这不是这样做的方法吗?此外,还有其他更简单的方法将变量添加到URI/URL吗?
在使用android布局xml时,我遇到了backgroundTint
属性.我不明白是什么.
还有什么backgroundTintMode
?
我查了官方的Android文档/指南Looper
,Handler
和MessageQueue
.但我无法得到它.我是android新手,对这些概念非常困惑.
为什么捆绑getParcelableArrayList
,getParcelable
方法; 但
Intent
只有putParcelableArrayListExtra
方法?我可以只传输object<T>
,而不是ArrayList
一个元素吗?那么,是getParcelable
为了什么?
我一直在使用ToolBar
它,因为它被添加到Support v7库中.我觉得我用得很好.但有一点我无法理解.为什么Google会创建这样的小部件?我的意思是我们可以ToolBar
通过使用做任何事情ActionBar
.我们为什么要使用ToolBar
?有什么优势ToolBar
了ActionBar
如果有的话?是否有必要更换ActionBar
的ToolBar
?
任何提示都表示赞赏.并提前感谢.
PS:我发现ToolBar
是一个蜕变ViewGroup
.那么,我们怎么能ToolBar
像Layout
?有人可以发布一些代码吗?
我正试图弄清楚如何Loaders
在Android 3.0中使用,但似乎无法让它工作.文档只描述使用,CursorLoader
但我正在使用AsyncTaskLoader
.
从文档中看来,您应该只需要实现,AsyncTaskLoader.loadInBackground()
但它永远不会被调用getLoaderManager().initLoader()
,然后在回调中创建加载器.
我可以看到调试消息说它Created new loader LoaderInfo{4040a828 #0 : ArticleDataLoader{4036b350}}
好像是成功创建的.
是否有可能在SDK中破坏了加载器,或者在创建加载器后是否需要调用某些方法?(他们在CursorLoader
示例中没有这样做).
编辑:似乎调用forceLoad()
返回的Loader initLoader()
至少启动加载,但这意味着你无法正确处理旋转:(
android android-3.0-honeycomb android-loadermanager android-loader
我有一个ImageView
.我imageView.setImageBitmap
用来将我的图像设置为背景ImageView
.但它将我的图像设置为ImageView
源(即android:src
),但它不会将我的图像设置为ImageView
背景(即android:background
).
当我使用imageView.setImageBitmap
,它看起来像,好像我以前imageView.setImageResource
没有imageView.setBackgroundResource
.
如果我想使用将图像设置为背景,我该如何处理imageView.setImageBitmap
.我知道我可以通过制作习惯来做到这一点ImageView
.但是没有习惯可能ImageView
吗?如果有可能,请告诉我怎么做.
python 2.7.5 str()
和repr()
函数有什么区别?
python.org上的说明:
该
str()
函数用于返回值相当于人类可读的值的表示,同时repr()
用于生成可由解释器读取的表示(或者SyntaxError
如果没有等效语法则强制执行)
但这对我来说并不清楚.
一些例子:
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'" # repr is giving an extra double quotes
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285' # repr is giving value with more precision
Run Code Online (Sandbox Code Playgroud)
所以我想知道以下内容
str()
应该何时使用,何时使用repr()
?str()
做哪些repr()
不可以?repr()
做哪些str()
不可以?1)缓冲流如何在后台工作,它们与普通流有什么不同?使用它们的优点是什么?
2)DataInputStream
也是以字节为基础的.但它有方法readLine()
.这里有什么意义?
android ×8
bundle ×1
handler ×1
java ×1
java-io ×1
looper ×1
parcelable ×1
python ×1
python-2.7 ×1
repr ×1
stream ×1
string ×1
uri ×1
uribuilder ×1