getIdentifier()
是 Android 中的一个方法,用于获取资源的 ID。它在不同的 View 中的用法略有不同,但基本概念是相同的。以下是在不同 View 中使用 getIdentifier()
方法的示例:
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);
}
}
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;
}
}
首先,确保你的自定义 View 类继承了相应的 View 类(例如 TextView
、Button
等),然后重写 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 之前,请确保检查其值。