
在程序升级的时候,每更新一个版本都要写升级日志,将升级日志放在xml文件中,通过代码来读取是一个较好的方案。
关键类:Resources
关键方法:public int getIdentifier(String name, String defType, String defPackage)
关于具体使用方法,举例如下:
1、updatelogxml文件位于res/xml/文件夹下:
<xml version="10" encoding="utf-8">
<updatelog>
<release
version="10"
versioncode="11">
<log>1、这个文件在res/xml文件夹下;</log>
<log>2、这个文件的名字是“updatelogxml”</log>
<log>3、这是一个xml文件</log>
</release>
</updatelog>
2、在代码中调用方法如下:
public class ResourcesActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView( Rlayoutresources_layout );
mTextView = ( TextView )findViewById( RidtextId );
getFileResources( );
}
private void getFileResources( ){
String packageName = getPackageName( );
try {
Resources resources = thisgetPackageManager( )getResourcesForApplication( packageName );
int resId = resourcesgetIdentifier( "updatelog", "xml", packageName );
String log = getUpdatelog( resId, resources );
int appId = resourcesgetIdentifier( "action_settings", "string", packageName );
String appName = resourcesgetString( appId );
mTextViewsetText( appName + "\n" + log );
} catch (NameNotFoundException e) {
eprintStackTrace();
}
}
private String parseTag( XmlResourceParser xml ) throws XmlPullParserException, IOException {
String result = "Version: "+ xmlgetAttributeValue(null, "version") + "\n" + "VersionCode: " + xmlgetAttributeValue(null, "versioncode") + "\n";
int eventType = xmlgetEventType( );
while( ( eventType != XmlPullParserEND_TAG ) || ( xmlgetName( )equals( "log" ) ) ) {
if( (eventType == XmlPullParserSTART_TAG) && ( xmlgetName( )equals( "log" ) ) ) {
eventType = xmlnext( );
result = result + xmlgetText( ) + "\n";
}
eventType = xmlnext( );
}
return result;
}
private String getUpdatelog( int resourceId, Resources resource ) {
String result = "";
XmlResourceParser xmlResParser = resourcegetXml( resourceId );
try {
int eventType = xmlResParsergetEventType( );
while ( eventType != XmlPullParserEND_DOCUMENT ) {
if ( ( eventType == XmlPullParserSTART_TAG ) && ( xmlResParsergetName( )equals( "release" ) ) ) {
result = result + parseTag( xmlResParser );
}
eventType = xmlResParsernext( );
}
} catch (XmlPullParserException e) {
Systemoutprintln( egetMessage( ) );
} catch (IOException e) {
Systemoutprintln( egetMessage( ) );
} finally {
xmlResParserclose( );
}
return result;
}
private TextView mTextView = null;
}
生成布局的时候,经常会用到LayoutInflaterfrom(context)inflate(layoutRes, parent, false)方法,一直不知其具体实现以及各参数作用,靠猜来实现
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)