簡體   English   中英

如何使用 layout.inflator 從存儲中加載 XML 布局?

[英]How to load XML layout from storage with layout.inflator?

如何通過傳遞 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 啟動此活動。 它不能正常工作

它僅在構建時起作用,重要的是出於性能原因,視圖膨脹在很大程度上依賴於在構建時完成的 XML 文件的預處理。 因此,目前無法在運行時在純 XML 文件上使用帶有 XmlPullParser 的 LayoutInflater。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM