温馨提示×

android getidentifier在不同view中用法

小樊
81
2024-12-03 06:13:08
栏目: 编程语言

getIdentifier() 是 Android 中的一个方法,用于获取资源的 ID。它在不同的 View 中的用法略有不同,但基本概念是相同的。以下是在不同 View 中使用 getIdentifier() 方法的示例:

  1. 在 Activity 中使用:
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int resourceId = getResources().getIdentifier("your_resource_name", "string", getPackageName());
        String text = getResources().getString(resourceId);
    }
}
  1. 在 Fragment 中使用:
public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_my, container, false);

        int resourceId = view.getResources().getIdentifier("your_resource_name", "string", getActivity().getPackageName());
        String text = view.getResources().getString(resourceId);

        return view;
    }
}
  1. 在自定义 View 中使用:

首先,确保你的自定义 View 类继承了相应的 View 类(例如 TextViewButton 等),然后重写 getIdentifier() 方法。

public class CustomView extends TextView {
    public CustomView(Context context) {
        super(context);
    }

    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public int getIdentifier(String name, String type, String packageName) {
        return super.getIdentifier(name, type, packageName);
    }
}

在其他地方使用自定义 View 时,你可以像使用普通 View 一样使用 getIdentifier() 方法。

CustomView customView = findViewById(R.id.custom_view);
int resourceId = customView.getIdentifier("your_resource_name", "string", getPackageName());
String text = customView.getResources().getString(resourceId);

请注意,getIdentifier() 方法可能会返回 -1,如果没有找到相应的资源。因此,在使用返回的资源 ID 之前,请确保检查其值。

0