Приложение вылетает при переключении на альбомную ориентацию

У меня проблемы с настройкой ландшафтного режима в моем приложении.

У меня есть папка / res, содержащая папку макета и папку области макета

layout
-----main.xml

layout-land
-----main.xml

Мой /layout-land/main.xml содержит элементы пользовательского интерфейса, отличные от /layout/main.xml. Как я могу соответствующим образом сопоставить каждый макет, когда пользователь переключился в альбомный режим и наоборот?

Я в основном показываю полноэкранный ImageView, когда пользователь переключается в альбомный режим. ImageView загрузит изображение из Интернета и отобразит его. Чтобы вернуться в портретный режим, нужно просто вернуться в мой портретный режим, в котором есть другой набор компонентов пользовательского интерфейса.

Я получаю сбой при переключении в альбомный режим:

, потому что я не могу получить идентификатор:

chartImageViewLandscape = (ImageView) this.findViewById(R.id.chartImageViewLandscape);

chartImageViewLandscape находится в / layout-land / main. есть ли способ создать окно внутри TThread, которое может обрабатывать сообщения внутри потока?

вот что я имею в виду

function TDataThread.WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
 Result := 0;
 case uMsg of
   WM_DATA_AVA: MessageBox(0, 'Data Avaibale', 'Test', 0);
  else Result := DefWindowProc(hwnd, uMsg, wParam, lParam);
 end;
end;

Procedure TDataThread.Create(const Title:String);
begin
 HAppInstance := HInstance;
 with WndClass do
 begin
  Style := 0;
  lpfnWndProc := @WindowProc;          //The Error Lies here (Variable Required)
  cbClsExtra := 0;
  cbWndExtra := 0;
  hInstance := HAppInstance;
  hIcon := 0;
  hCursor := LoadCursor(0, IDC_ARROW);
  hbrBackground := COLOR_WINDOW;
  lpszMenuName := nil;
  lpszClassName := 'TDataForm';
 end;
 Windows.RegisterClass(WndClass);
 MainForm := CreateWindow('TDataForm', PAnsiChar(Title), WS_DLGFRAME , XPos, YPos, 698, 517, 0, 0, hInstance, nil);
end;

мне нужна форма, чтобы я мог получить ее дескриптор из другого приложения. Используя FindWindow и FindWindowEx, если необходимо

6
задан killercode 3 September 2010 в 18:38
поделиться