Похоже, вы хотите получать сенсорные события из всей области вашего макета для этого конкретного теста. Попробуйте подключить сенсорный слушатель к родительскому представлению, а не к отдельному целевому виду.
Это не очень распространенный подход. В большинстве случаев вы захотите прослушивать события касания в определенном дочернем представлении, и если у вас есть другие представления в макете, которые обрабатывают события касания (например, кнопка), они будут иметь приоритет над родительским представлением. См. http://developer.android.com/guide/topics/ui/ui-events.html для получения дополнительной информации об обработке событий пользовательского интерфейса.
Макет (touch_viewer.xml):
А в вашей деятельности:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.touch_viewer);
final LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
final TextView text = (TextView) findViewById(R.id.text);
parent.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent ev) {
text.setText("Touch at " + ev.getX() + ", " + ev.getY());
return true;
}
});
}
Чтение реестра довольно просто. Пространство имен Microsoft.Win32
имеет статический класс Registry
. Чтобы прочитать ключ из узла HKLM
, введите следующий код:
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software\\NodeName")
Если узел - HKCU
, вы можете заменить LocalMachine
на CurrentUser
.
Получив объект RegistryKey
, используйте GetValue
, чтобы получить значение из реестра. Продолжение. Используя приведенный выше пример, можно получить значение реестра pathName:
string pathName = (string) registryKey.GetValue("pathName");
И не забудьте закрыть объект RegistryKey
, когда вы закончите с ним (или поместите оператор, чтобы получить значение в Использование блока
).
Обновления
Я вижу пару вещей. Во-первых, я бы изменил pathName на статическое свойство, определяемое как:
Private static string PathName
{
get
{
using (RegistryKey registryKey = Registry.CurrentUser.OpenSubKey(@"Software\Copium"))
{
return (string)registryKey.GetValue("BinDir");
}
}
}
Две проблемы:
RegistryKey
будет держать реестр открытым. Использование этого параметра в качестве статической переменной в классе вызовет проблемы на компьютере. try
{
RegistryKey regKey = Registry.LocalMachine;
regKey = regKey.OpenSubKey(@"Software\Application\");
if (regKey != null)
{
return regKey.GetValue("KEY NAME").ToString();
}
else
{
return null;
}
}
catch (Exception ex)
{
return null;
}