Reputation: 31
Please help me! i found a problem in my activity I am trying to create an Alarm activity by displaying% s as detail (info) from...
My Activity
mPreAlarm = getIntent().hasExtra(EXTRA_PRE_ALARM_FLAG) && getIntent().getBooleanExtra(EXTRA_PRE_ALARM_FLAG, true);
if (mPreAlarm) {
String formatString = "%2$tl:%2$tM %2$tp %1$s";
if (mSettings.getTimeFormatFor(0) == ReyTime.TIME_24) {
formatString = "%2$tk:%2$tM %1$s";
}
mReyerName.setText(String.format(formatString, mReyerNameString, now));
} else {
mReyerName.setText(getString(R.string.reyer_name_time, mReyerNameString));
}
mAlarmOff = (Button) findViewById(R.id.alarm_off);
mAlarmOff.setOnClickListener(this);
try {
playAlarm();
} catch (Exception e) {
Log.e("RingAlarmActivity", e.getMessage(), e);
}
//if(PermissionUtil.hasSelfPermission(this, Manifest.permission.READ_PHONE_STATE)) {
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
//}
}
My String in my aplication
<string name="rey_name_time">%s time.</string>
My LogCat, i found a error, and i'm can't fix that
05-11 19:39:53.384 9007-9007/com.rey.kampret E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.rey.kampret, PID: 9007
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rey.kampret/com.rey.kampret.kampret1.RingAlarmActivity}: java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags =
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2680)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2741)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
Caused by: java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags =
at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:4131)
at java.util.Formatter$FormatSpecifier.checkBadFlags(Formatter.java:3035)
at java.util.Formatter$FormatSpecifier.checkGeneral(Formatter.java:2993)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2764)
at java.util.Formatter$FormatSpecifierParser.<init>(Formatter.java:2591)
at java.util.Formatter.parse(Formatter.java:2524)
at java.util.Formatter.format(Formatter.java:2472)
at java.util.Formatter.format(Formatter.java:2426)
at java.lang.String.format(String.java:2670)
at android.content.res.Resources.getString(Resources.java:406)
at android.content.Context.getString(Context.java:492)
at com.rey.kampret.kampret1.RingAlarmActivity.onCreate(RingAlarmActivity.java:104)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2741)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6176)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
Upvotes: 3
Views: 5915
Reputation: 401
when you are working with "strings", you need to use "%s", for example:
private String responseUser(User user) {
return String.format("hello %s, your email %s and pass %s! (log: %s)",
user.getName(),
user.getEmail(),
user.getPass(),
user.result()
);
}
Upvotes: 5
Reputation: 807
Replace the part of the code where you setting the time format like this:
String formatString = "%1$tl:%1$tM %1$tp %1$s";
if (mSettings.getTimeFormatFor(0) == ReyTime.TIME_24) {
formatString = "%1$tk:%1$tM %1$s";
}
Upvotes: 0