在C中,printf()语句允许在参数列表中提供精度长度.
printf("%*.*f", 7, 3, floatValue);
Run Code Online (Sandbox Code Playgroud)
其中星号分别用第一和第二值替换.
我正在寻找Android/Java中的等价物; String.format()抛出异常.
编辑:谢谢,@ Tenner; 它确实有效.
鉴于此代码:
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
public static final int MESSAGE_NOT_CONNECTED = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
}
// -------------------------------------------------
public final void setStatus(int Rid) {
final ActionBar actionBar = getActionBar();
actionBar.setSubtitle(Rid);
}
// -------------------------------------------------
static Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_NOT_CONNECTED:
setStatus(R.string.title_not_connected);
break;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误:无法对非静态方法setStatus(int)进行静态引用...
这是有道理的,因为setStatus()中的getActionBar()是一个非静态方法.
由于警告,我使Handler类保持静态:此Handler类应该是静态的,否则可能会发生泄漏.
问题:如何从静态处理程序中正确访问setStatus()方法?
编辑:新的处理程序代码是答案.
static class hHandler extends Handler {
private final WeakReference<MainActivity> …Run Code Online (Sandbox Code Playgroud) 从这个例子:
private static Preference.OnPreferenceClickListener BindToPreferenceClickListener = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
boolean isHandled = false;
if (...) {
isHandled = true;
}
return isHandled;
}
}
Run Code Online (Sandbox Code Playgroud)
"真实"的回报价值是多少?API文档声明该值表示如果"true"处理了点击,但这究竟意味着什么?我认为这意味着没有调用传递首选项的编辑器,而是可以使用自定义编辑器,但我的实验得出结论,默认编辑器在任一状态下都被调用.
给出以下代码:
wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifi.getConnectionInfo();
Run Code Online (Sandbox Code Playgroud)
...清单中的这一行:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)
我仍然得到异常:
WifiService: Neither user 10057 nor current process has android.permission.ACCESS_WIFI_STATE.
Run Code Online (Sandbox Code Playgroud)
我正在Xoom,Honeycomb 3.1上调试。
如果需要任何其他信息,请询问。
编辑:添加清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.WiFiDemo"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<activity android:label="@string/app_name" android:name="WiFiDemo">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud) 运行下面的代码,我在平板电脑上创建了一个包含Google Drive Android API的文件夹.几秒钟后,从PC上的远程位置删除该文件夹.当我重新运行代码时,API仍然认为"MyFolder"存在,即使它已被删除且在平板电脑上的Google云端硬盘应用中不可见.文件夹持久性最终会在一段时间后消失,代码按预期工作.这是云驱动器的预期行为吗?
Query query = new Query.Builder()
.addFilter(Filters.and(Filters.eq(
SearchableField.TITLE, "MyFolder"),
Filters.eq(SearchableField.TRASHED, false)))
.build();
Drive.DriveApi.query(getGoogleApiClient(), query)
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
showMessage("Cannot create folder in the root.");
} else {
boolean isFound = false;
for(Metadata m : result.getMetadataBuffer()) {
if(!isFound) {
if (m.getTitle().equals("MyFolder")) {
showMessage("Folder exists");
isFound = true;
}
}
}
if(!isFound) {
showMessage("Folder not found; creating it.");
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("MyFolder")
.build();
Drive.DriveApi.getRootFolder(getGoogleApiClient())
.createFolder(getGoogleApiClient(), changeSet)
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() { …Run Code Online (Sandbox Code Playgroud) 我在任何地方都没有看到明确的答案:ArrayAdapter.insert()是否在指定位置插入新项目..或..它是否替换指定位置的信息?