Java – How to use small spaces as number separators in Android?

How to use small spaces as number separators in Android?… here is a solution to the problem.

How to use small spaces as number separators in Android?

To make it easier for users to know the exact score, I wanted to separate my three numeric blocks with tiny spaces (Unicode: SIX-PER-EM SPACE).

I want 1∼241∼234 instead of 1241234.

I tried

DecimalFormat formatter = new DecimalFormat("# ### ### ### ###");
String score = formatter.format(getHighscore());

Unfortunately, the code gives me an error. How do I put my 6 em spaces in my number?

Error:

FATAL EXCEPTION: main
Process: com.pairs.pairs, PID: 4296
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pairs.pairs/com.pairs.phoneme.TestingActivity}: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class fragment
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2547)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613)
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                       at android.os.Looper.loop(Looper.java:207)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5695)
                                                                       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:749)
                                                                    Caused by: android.view.InflateException: Binary XML file line #13: Binary XML file line #13: Error inflating class fragment
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                       at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:406)
                                                                       at android.app.Activity.setContentView(Activity.java:2190)
                                                                       at com.pairs.phoneme.TestingActivity.portraitLayout(TestingActivity.java:125)
                                                                       at com.pairs.phoneme.TestingActivity.onCreate(TestingActivity.java:76)
                                                                       at android.app.Activity.performCreate(Activity.java:6270)
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2500)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613) 
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                       at android.os.Looper.loop(Looper.java:207) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5695) 
                                                                       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:749) 
                                                                    Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782)
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
                                                                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                       at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:406) 
                                                                       at android.app.Activity.setContentView(Activity.java:2190) 
                                                                       at com.pairs.phoneme.TestingActivity.portraitLayout(TestingActivity.java:125) 
                                                                       at com.pairs.phoneme.TestingActivity.onCreate(TestingActivity.java:76) 
                                                                       at android.app.Activity.performCreate(Activity.java:6270) 
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2500) 
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613) 
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                       at android.os.Looper.loop(Looper.java:207) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5695) 
                                                                       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:749) 
                                                                    Caused by: java.lang.IllegalArgumentException: # ### ### ### ###
                                                                       at java.text.DecimalFormat.initNative(DecimalFormat.java:564)
                                                                       at java.text.DecimalFormat.<init>(DecimalFormat.java:557)
                                                                       at java.text.DecimalFormat.<init>(DecimalFormat.java:535)
                                                                       at com.pairs.phoneme.Score.getHighScoreString(Score.java:103)
                                                                       at com.pairs.phoneme.fragments.ScoreAndTimeFragment.updateTopbarViews(ScoreAndTimeFragment.java:44)
                                                                       at com.pairs.phoneme.fragments.ScoreAndTimeFragment.onCreateView(ScoreAndTimeFragment.java:59)
                                                                       at android.app.Fragment.performCreateView(Fragment.java:2236)
                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:954)
                                                                       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1131)
                                                                       at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1233)
                                                                       at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2228)
                                                                       at android.app.FragmentController.onCreateView(FragmentController.java:98)
                                                                       at android.app.Activity.onCreateView(Activity.java:5579)
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754)
                                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
                                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
                                                                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
                                                                       at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
                                                                       at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:406) 
                                                                       at android.app.Activity.setContentView(Activity.java:2190) 
                                                                       at com.pairs.phoneme.TestingActivity.portraitLayout(TestingActivity.java:125) 
                                                                       at com.pairs.phoneme.TestingActivity.onCreate(TestingActivity.java:76) 
                                                                       at android.app.Activity.performCreate(Activity.java:6270) 
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) 
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2500) 
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613) 
                                                                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1469) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                                       at android.os.Looper.loop(Looper.java:207) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:5695) 
                                                                       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:749) 

Solution

You receive an exception:

Caused by: java.lang.IllegalArgumentException: # ### ### ### ### at
java.text.DecimalFormat.initNative(DecimalFormat.java:564)

I don’t think it’s possible to pass spaces to this constructor.

I have a different code to suit your needs :

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);

DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator('\u2008');

formatter.setDecimalFormatSymbols(symbols);

Log.e("Formatted: ", formatter.format(1241234));

Related Problems and Solutions