【问题标题】:How to load XML layout from storage with layout.inflator?如何使用 layout.inflator 从存储中加载 XML 布局?
【发布时间】:2020-09-05 15:37:28
【问题描述】:

如何通过传递 layout.inflator(XmlPullParser,null) 从存储中加载 XML 布局?

我的代码如下:

import android.app.*;
import android.os.*;
import android.view.*;
import org.xmlpull.v1.*;
import android.net.*;
import android.content.*;
import java.io.*;
import android.widget.*;


public class inflater extends Activity
{
View v;
XmlPullParser p;
String uri;
String filelocat;
FileReader fr;
InputStream fi;

@Override
protected void onCreate(Bundle savedInstanceState)
{


    LinearLayout loi=findViewById(R.id.main2LinearLayout);
    super.onCreate(savedInstanceState);

    LayoutInflater li= LayoutInflater.from(this);

    try
    {
        p=ok("/storage/emulated/0/AppProjects/layoutt/Layout/app/src/main/res/layout/main.xml");
        Thread.sleep(4000);

    }
    catch (InterruptedException e)
    {}
    v=li.inflate(p,loi);
    Toast.makeText(this,p.toString(),Toast.LENGTH_LONG).show();
    setContentView(R.layout.main2);
}
private XmlPullParser ok(String uri){
    XmlPullParser  parser=null;

    try
    {

        fi = new FileInputStream(new File(uri));
    }
    catch (FileNotFoundException e)
    {}

    try
    {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
        factory.setNamespaceAware(true);  

        parser = factory.newPullParser();
        parser.setInput(fi, null);

    }
    catch (XmlPullParserException e)
    {}  
    return parser;
}
}

这行麻烦了:

v=li.inflate(p,loi);

我也试过了:

v=li.inflate(p,null);

他们都没有工作

如您所见,我尝试传递格式正确的布局 XML 文件。我也给予了所有许可。我通过单击按钮从我的启动器 Activity 启动此活动。它不正确

【问题讨论】:

    标签: java android layout xmlpullparser


    【解决方案1】:

    它只在构建时起作用, 重要 出于性能原因,视图膨胀在很大程度上依赖于在构建时完成的 XML 文件的预处理。因此,目前无法在运行时将 LayoutInflater 与 XmlPullParser 一起用于纯 XML 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多