Измените <view
на <View
, потому что view
не находится в пустом представлении. Это для пользовательского представления, определенного через class
attr, как показано ниже:
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="com.your.package.YourCustomView" />
И вы получили
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
из-за LayoutInflater
пытается разобрать class
attr:
LayoutInflater
Исходный код
//...
View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
boolean ignoreThemeAttr) {
if (name.equals("view")) { // line 724
name = attrs.getAttributeValue(null, "class"); // line 725
}
// Apply a theme wrapper, if allowed and one is specified.
if (!ignoreThemeAttr) {
final TypedArray ta = context.obtainStyledAttributes(attrs, ATTRS_THEME);
final int themeResId = ta.getResourceId(0, 0);
if (themeResId != 0) {
context = new ContextThemeWrapper(context, themeResId);
}
ta.recycle();
}
if (name.equals(TAG_1995)) { // line 738
// Let's party like it's 1995!
return new BlinkLayout(context, attrs);
}
//...
view
и получает true
class
attr и получает null
blink
и получает сбой Кроме того, есть любопытная вещь, разработчики Android добавили пасхальное яйцо, вы можете попробовать:
<view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="blink">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Some text" />
</view>
начать с win7 существует недокументированный путь - нужно вызвать ZwQueryKey
с KeyFlagsInformation
. с этим мы можем запросить ключевые волатильные или нет, также - ключевые являются символической ссылкой на другой ключ. код может выглядеть так:
struct KEY_CONTROL_FLAGS_INFO_W7 // KeyFlagsInformation for Win7
{
ULONG ControlFlags[3];
};
#define KEY_CTRL_FL_W7_01__IS_VOLATILE 0x01
#define KEY_CTRL_FL_W7_01__SYM_LINK 0x02
HKEY hKey;
LSTATUS r = RegOpenKeyEx(HKEY_CURRENT_USER,
L"Volatile Environment", 0, KEY_READ, &hKey);
if (r == NOERROR)
{
ULONG cb;
KEY_CONTROL_FLAGS_INFO_W7 kcf;
if (0 <= ZwQueryKey(hKey, KeyFlagsInformation, &kcf, sizeof(kcf), &cb))
{
if (kcf.ControlFlags[1] & KEY_CTRL_FL_W7_01__IS_VOLATILE)
{
DbgPrint("key is volatile\n");
}
if (kcf.ControlFlags[1] & KEY_CTRL_FL_W7_01__SYM_LINK)
{
DbgPrint("key is link\n");
}
}
RegCloseKey(hKey);
}
Проверьте параметр параметров реестра здесь:
https://msdn.microsoft.com/en-us/library/dd411617 (v = vs.110) .aspx
Это Enum с Volatile как опция
Один из способов - попытаться создать нелетучий подраздел под проверяемым ключом, используя RegCreateKeyEx
. Если ключ действительно волатилен, тогда он с ошибкой будет ERROR_CHILD_MUST_BE_VOLATILE
. Даже ShSetValue
возвращает ERROR_CHILD_MUST_BE_VOLATILE
при попытке установить значение в энергозависимой клавише.
reg add HKLM\SOFTWARE\WOW6432Node\volkeytocheck\test
"ОШИБКА: невозможно создать стабильный подраздел под летучим родительским ключом. & quot; Если вы проверите с Process Monitor, Reg.exe получит результат для операции RegCreateKey, указанной как «CHILD MUST BE VOLATILE».
– HelpingHand
20 June 2017 в 11:02
KEY_FLAGS_INFORMATION
, определенный как одиночныйDWORD
, если вы вызываетеZwQueryKey(..KeyFlagsInformation..)
, мы можем видеть, что размер выходного файла0xc
- так должно быть 3DWORD
. здесь уже сканирует мой фрейм. Я нашел несколько других флагов на некоторых клавишах, но я не могу их интерпретировать - что это значит. может быть, вы можете это знать. – RbMm 7 July 2018 в 09:27