Android如何从SD卡中提取语言xml文件?

Android如何从SD卡中提取语言xml文件?,android,Android,android中是否有任何方法可以使用SD卡中的strings.xml文件? 基本上我在SD上有很多字符串文件,strings\u en.xml,strings\u de.xml,strings\u fr.xml等等 如何将该文件作为字符串xml文件加载并实时刷新应用程序中的所有视图?(我有很多视图,因此如何在一个视图中加载所有字符串,而不是在视图中逐个加载) 谢谢, Leslie您可以尝试创建一个LanguageClass,在其中您可以在hashmap中解析和加载字符串。在同一个类中,再创建一

android中是否有任何方法可以使用SD卡中的strings.xml文件? 基本上我在SD上有很多字符串文件,
strings\u en.xml,strings\u de.xml,strings\u fr.xml
等等

如何将该文件作为字符串xml文件加载并实时刷新应用程序中的所有视图?(我有很多视图,因此如何在一个视图中加载所有字符串,而不是在视图中逐个加载)

谢谢,
Leslie

您可以尝试创建一个LanguageClass,在其中您可以在hashmap中解析和加载字符串。在同一个类中,再创建一个函数,您可以向其传递“key”,即字符串名称并获取值

public class LanguageLoader(){
    HashMap<String,String> strLangMap = new HashMap<String,String>;

    public void LoadLanguageData (String pathtolanguagepathxml){
         //do you xml parsing here and load values in the strLangMap
    }

    public String getString(String key){
        //get value of the corresponding key from strLangMap
    }
}

BSI的基本思想是解析SD卡-->中的字符串,并在断言中保留一个文件观察器,以便在文件更改时获得通知-->并刷新视图

以下是三个步骤:

   1. Parse String.xml :

    class Product {

    public String name;

    }
    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        XmlPullParserFactory pullParserFactory;
        try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();

            InputStream in_s = getApplicationContext().getAssets().open(
                    "temp.xml");
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in_s, null);

            parseXML(parser);

        } catch (XmlPullParserException e) {

            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private void parseXML(XmlPullParser parser) throws XmlPullParserException,
            IOException {
        ArrayList<Product> products = null;
        int eventType = parser.getEventType();
        Product currentProduct = null;

        while (eventType != XmlPullParser.END_DOCUMENT) {
            String name = null;
            switch (eventType) {
            case XmlPullParser.START_DOCUMENT:
                products = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                name = parser.getName();

                if (name.equals("string")) {
                    String xyz = parser.getAttributeValue(null, "name");
                    System.out.println("1234567890***" + xyz);
                    currentProduct = new Product();
                    currentProduct.name = parser.nextText();
                    System.out.println("1234567890" + currentProduct.name);
                }
                break;
            case XmlPullParser.END_TAG:
                name = parser.getName();
                if (name.equalsIgnoreCase("resources")
                        && currentProduct != null) {
                    products.add(currentProduct);

                }
            }
            eventType = parser.next();
        }

        printProducts(products);
    }

    private void printProducts(ArrayList<Product> products) {
        String content = "";
        Iterator<Product> it = products.iterator();
        while (it.hasNext()) {
            Product currProduct = it.next();
            content = content + "nnnProduct :" + currProduct.name + "n";

        }

        TextView display = (TextView) findViewById(R.id.info);
        display.setText(content);
    }


你的意思是在运行时?我想从网络上你可以把这些文件放在服务器上,我可以把它们作为xml文件下载到sd卡上,然后我怎样才能实时加载它们,而不是重新打开我的应用程序?你有没有试过任何xml解析库?真正的问题是解析之后我怎样才能将所有字符串加载到我的应用程序上?我有很多视图和字符串..你需要重新启动你的应用程序或活动。。希望我想向你展示演示..愿意尽快发布
   1. Parse String.xml :

    class Product {

    public String name;

    }
    public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        XmlPullParserFactory pullParserFactory;
        try {
            pullParserFactory = XmlPullParserFactory.newInstance();
            XmlPullParser parser = pullParserFactory.newPullParser();

            InputStream in_s = getApplicationContext().getAssets().open(
                    "temp.xml");
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in_s, null);

            parseXML(parser);

        } catch (XmlPullParserException e) {

            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private void parseXML(XmlPullParser parser) throws XmlPullParserException,
            IOException {
        ArrayList<Product> products = null;
        int eventType = parser.getEventType();
        Product currentProduct = null;

        while (eventType != XmlPullParser.END_DOCUMENT) {
            String name = null;
            switch (eventType) {
            case XmlPullParser.START_DOCUMENT:
                products = new ArrayList();
                break;
            case XmlPullParser.START_TAG:
                name = parser.getName();

                if (name.equals("string")) {
                    String xyz = parser.getAttributeValue(null, "name");
                    System.out.println("1234567890***" + xyz);
                    currentProduct = new Product();
                    currentProduct.name = parser.nextText();
                    System.out.println("1234567890" + currentProduct.name);
                }
                break;
            case XmlPullParser.END_TAG:
                name = parser.getName();
                if (name.equalsIgnoreCase("resources")
                        && currentProduct != null) {
                    products.add(currentProduct);

                }
            }
            eventType = parser.next();
        }

        printProducts(products);
    }

    private void printProducts(ArrayList<Product> products) {
        String content = "";
        Iterator<Product> it = products.iterator();
        while (it.hasNext()) {
            Product currProduct = it.next();
            content = content + "nnnProduct :" + currProduct.name + "n";

        }

        TextView display = (TextView) findViewById(R.id.info);
        display.setText(content);
    }
2. Keep File Observer :
3.  Refresh Views :

private void restartActivity() {
    Intent intent = getIntent();
    finish();
    startActivity(intent);
}