相关疑难解决方法(0)

是否有针对Android的枚举字符串资源查找模式?

我有一个枚举,我需要将值显示为本地化字符串.我目前的做法是:

public enum MyEnum {
    VALUE1(R.string.VALUE1),
    VALUE2(R.string.VALUE2),
    .
    .
    VALUE10(R.string.VALUE10);

    private int mResId = -1;

    private MuEnum(int resId) {
        mResId = resId;
    }

    public String toLocalizedString(Resources r) {
        if (-1 != mResId) return (r.getString(mResId));
        return (this.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来做到这一点?如果我能以某种方式根据枚举值名称(即'VALUE1')查找资源,我会喜欢它.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="VALUE1"/>My string</string>
    <string name="VALUE2"/>My string 2</string>
    .
    .
    <string name="VALUE10"/>My string 3</string>
</resources>
Run Code Online (Sandbox Code Playgroud)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

编辑:为了将来参考,这是最适合我的解决方案:

public enum MyEnum {
    VALUE1, 
    VALUE2, 
    . 
    . 
    VALUE10; 

    /**
     * Returns a localized label used to represent this enumeration value. …
Run Code Online (Sandbox Code Playgroud)

enums android android-resources

36
推荐指数
3
解决办法
2万
查看次数

如何从Android中的枚举ToString访问资源字符串?

在我的应用程序中,我有一个由枚举填充的Spinner:

ArrayAdapter<myEnum> enumAdapter = new ArrayAdapter<Stroke> (parentActivity.getApplicationContext(), R.layout.simple_spinner_item, myEnum.values());
enumAdapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
enumSpinner.setAdapter(strokeAdapter);
Run Code Online (Sandbox Code Playgroud)

这使用了枚举toString()方法的覆盖来获取要在其中显示的枚举值的友好名称Spinner.目前我的enum有友好名字的字符串硬编码,但我想将它们移动strings.xml到支持本地化.

但是,toString无权访问,Context因此我不确定如何解析资源ID.

有没有办法在枚举的toString()方法中获取本地化字符串?

java android

19
推荐指数
2
解决办法
2万
查看次数

是否有一种明智的方法来引用静态初始化器中的应用程序资源(R.string ...)

是否有一种明智,干净的方式来引用我的android类中的静态initalizer代码中的应用程序资源.

我特别想定义一个枚举,它包含常量中某些资源字符串的值.

这是枚举的一些伪代码

private enum MyEnum {
    Const1(getString(R.string.string1)),
    Const2(getString(R.string.string2)),
    Const3(getString(R.string.string3));

    private String strVal;

    MyEnum(String strVal){
        this.strVal = strVal;
    }
}
Run Code Online (Sandbox Code Playgroud)

此问题适用于任何类型的静态初始化.

android

6
推荐指数
1
解决办法
1949
查看次数

Spring从属性文件获取枚举值

我有一个枚举,其中值以utf8格式显示。因此,我的jsp视图中存在一些编码问题。有没有办法从我的messages.properties文件中获取值。如果我的属性文件中包含以下几行,该怎么办:

shop.first=??????
shop.second=??????
shop.third=??????
Run Code Online (Sandbox Code Playgroud)

我如何将它们注入枚举?

public enum ShopType {    
    FIRST("??????"), SECOND("??????"), THIRD("??????");

    private String label;

    ShopType(String label) {
        this.label = label;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums spring jsp messages

5
推荐指数
1
解决办法
4764
查看次数

如何用线程内的Toast替换system.out

如何在线程中添加Toast方法.我想通过用toast方法替换system.out来调试,以显示结果.

我知道在线程中使用应用程序Context,如下所示:Toast.makeText(getApplicationContext(),"help",Toast.LENGTH_LONG).show(); 不管用.

我不知道如何在Toast调用中使用Runnable并从Thread调用runOnUiThread(runnable)

有人可以帮助我吗?

public class NetworkServer extends Thread
{

   DatagramSocket mSocket = null;   
   boolean isFinish = false;

   private SimplestPossibleActivity activity;

   public NetworkServer(SimplestPossibleActivity activity)
   {
    this.activity = activity;
   }

   public void run() 
   {

      try 
      {

        Log.d("UDP", "Listening");
        mSocket = new DatagramSocket( 2010); //4444
        mSocket.setBroadcast(true);

        while (!isFinish) 
        {

           Log.d("UDP", "C: socket create success");
           byte[] recvbuffer = new byte[12];
           DatagramPacket packet = new DatagramPacket(recvbuffer,recvbuffer.length);
           Log.d("UDP", "receiving...");
           mSocket.receive(packet);
           Log.d("UDP", "received packet");

           ByteBuffer bb = ByteBuffer.allocate(recvbuffer.length).order(ByteOrder.LITTLE_ENDIAN);
           bb.put(recvbuffer);
           bb.rewind();
           //System.out.println(bb.getFloat());
           //System.out.println(bb.getFloat());
           //System.out.println(bb.getFloat());


           Bundle data …
Run Code Online (Sandbox Code Playgroud)

android

3
推荐指数
1
解决办法
6663
查看次数

标签 统计

android ×4

enums ×2

java ×2

android-resources ×1

jsp ×1

messages ×1

spring ×1