Android利用资源名称获取其ID(一)--->getIdentifier()

MainActivity如下:

package cc.wy;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
/**
 * Demo描述:
 * 利用getIdentifier()方法获取资源ID
 *
 * 方法描述:
 * getIdentifier(String name, String defType, String defPackage)
 * 第一个参数:资源的名称
 * 第二个参数:资源的类型(drawable,string等)
 * 第三个参数:包名
 */
public class MainActivity extends Activity {
	private Context mContext;
	private ImageView mImageView;
	private TextView mTextView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }

    private void init(){
    	mContext=this;
    	//获取图片资源的ID
    	mImageView=(ImageView) findViewById(R.id.imageView);
    	int drawableId = mContext.getResources().getIdentifier("ic_launcher","drawable", mContext.getPackageName());
    	mImageView.setImageResource(drawableId);
    	System.out.println("----> 获取到的图片资源 drawableId="+drawableId);

    	//获取字符串资源
    	mTextView=(TextView) findViewById(R.id.textView);
    	int stringId = mContext.getResources().getIdentifier("hello","string", mContext.getPackageName());
    	mTextView.setText(stringId);
    	System.out.println("----> 获取到的字符串资源 stringId="+stringId);

    }
}

main.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="利用getIdentifier()方法获取资源ID" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/imageView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dip" />

</RelativeLayout>

strings.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">TestGetIdentifier</string>

</resources>
时间: 2024-10-06 13:56:08

Android利用资源名称获取其ID(一)---&gt;getIdentifier()的相关文章

Android利用资源名称获取其ID(二)---&amp;gt;反射

MainActivity如下: package cn.testreflect; import java.lang.reflect.Field; import android.os.Bundle; import android.widget.ImageView; import android.app.Activity; /** * Demo描述: * 依据图片的名字,通过反射获取其在drawable中的ID * 在根据此ID显示图片 */ public class MainActivity ext

android 从资源中获取数组

   8.1.1.概述 除了在Java代码中定义数组,Android还提供了在资源中定义数组,然后在Java代码中解析资源,从而获取数组的方法. 实际开发中,推荐将数据存放在资源文件中,以实现程序的逻辑代码与数据分离,便于项目的管理,尽量减少对Java代码的修改. 8.1.2.在资源中定义数组 步骤1.在res/values文件夹下创建arrays.xml文件: 步骤2.在arrays.xml文件中创建一个数组,如下代码所示: <?xml version="1.0" encodi

android利用ContentResolver访问者获取手机短信信息

利用ContentResolver访问者获取手机短信信息,在此记录一下,一遍以后查询. 首先看一下结果,结果如下: activity_message.xml类: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_

android利用消息机制获取网络图片

在前面都写到用AsyncTask来获取网络中的图片.其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的. 消息机制的图解: 下面就用看代码来理解上面的图片. 布局:activity_main.xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" an

android利用ContentResolver访问者获取手机联系人信息

利用ContentResolver内容访问者,获取手机联系人信息我做了两种不同的做法.第一种,直接获取所有手机联系人信息,展示在ListView中.第二种,通过Butten按钮跳转到系统的手机联系人界面,单个获取手机联系人信息,展示在ListView中,结果如下: 第一种: 第二种: 第一种:直接获取所有手机联系人信息 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission android:name="android.permission.REA

Android app 上如何获取用户id列表

问题描述 比如说,有好几个人都发送了消息给我,我如何获取到这几个人的id呢. 解决方案 接收消息的message有from和to这些字段,具体可以看官网的文档

Android中实现根据资源名获取资源ID

接触过Android开发的同学们都知道在Android中访问程序资源基本都是通过资源ID来访问.这样开发起来很简单,并且可以不去考虑各种分辨率,语言等不同资源显式指定. 痛点 但是,有时候也会有一些问题,比如我们根据服务器端的值取图片,但是服务器端绝对不会返回给我们的是资源id,最多是一种和文件名相关联的值,操作资源少的时候,可以维护一个容器进行值与资源ID的映射,但是多的话,就需要另想办法了. 便捷的方法 在这种情况下,使用文件名来得到资源ID显得事半功倍. 通过调用Resources的get

Android热身:通过网络获取资源并更新UI组件

Android热身:通过网络获取资源并更新UI组件 目标 点击"发送请求"按钮,下载某网页的html源码,并显示在TextView控件上:点击"清空",清除TextView控件上的内容 效果图: 要点 开启网络权限 网络请求独立为一个模块 按钮点击事件的监听器 新开线程进行网络请求调用 用handler更新UI组件 源码 //MainActivity.java 主程序 package com.example.chris.handlerdemo; import and

Android中实现根据资源名获取资源ID_Android

接触过Android开发的同学们都知道在Android中访问程序资源基本都是通过资源ID来访问.这样开发起来很简单,并且可以不去考虑各种分辨率,语言等不同资源显式指定. 痛点 但是,有时候也会有一些问题,比如我们根据服务器端的值取图片,但是服务器端绝对不会返回给我们的是资源id,最多是一种和文件名相关联的值,操作资源少的时候,可以维护一个容器进行值与资源ID的映射,但是多的话,就需要另想办法了. 便捷的方法 在这种情况下,使用文件名来得到资源ID显得事半功倍. 通过调用Resources的get