Вопрос:

Макет, не отображающий контент при загрузке через новое действие в Xamarin

c# android layout xamarin xamarin.android

6430 просмотра

1 ответ

64 Репутация автора

Я разрабатываю приложение с Xamarin.

У меня есть три действия: DiallerActivity , ContactsActivity и SplashActivity - и два макета .axml, Main.axml и Contacts.axml

SplashActivity является первым загружен , который отображает заставку при открытии приложения, когда это делается он загружает DiallerActivity , который отображает мой Main.axml макет - это работает отлично.

Внутри моего макета Main.axml у меня есть кнопка, которая при нажатии загружает ContactsActivity, которая должна затем загрузить Contacts.axml, в котором только 3 кнопки и метка ... ни одна из которых не запрограммирована на выполнение каких-либо действий.

Проблема заключается в том, что при нажатии кнопки экран переключается на пустой экран, по-прежнему показывая панель Android в верхней части экрана ... он просто не показывает никакого содержимого из файла .axml.

Мне нужно, чтобы макет Contacts.axml отображался во время выполнения действия. Надеюсь, я прояснил это. Мой текущий код ниже.

Код для DiallerActivity

protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);

Button btnAcceptClick = FindViewById<Button> (Resource.Id.btnAccept);

btnAcceptClick.Click += delegate {
            StartActivity (typeof(VoWiFiApplicationFinal.ContactsActivity));
        };

Код для контактов

public class ContactsActivity : Activity
{
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        // setting the contacts.axml as the view
        SetContentView (Resource.Layout.Contacts);
    }
}

У кого-нибудь есть идеи, почему Contacts.axml не отображается? Если вам нужно, чтобы я предоставил дополнительную информацию, просто скажите, и я передам ее ... Кстати, я использую C # в качестве своего языка, поэтому я бы предпочел помощь, связанную с этим, если это даже относится к рассматриваемому вопросу. Спасибо за прочтение.

Contacts.xaml код

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
    android:layout_width="fill_parent"
    android:id="@+id/toptest"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+/label1"
        android:text="testlabel" />
</LinearLayout>
<LinearLayout
    android:layout_width="fill_parent"
    android:id="@+id/testagain"
    android:layout_height="wrap_content"
    android:orientation="horizontal" />
<LinearLayout
    android:layout_width="fill_parent"
    android:id="@+id/menuBar"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <Button
        android:layout_width="fill_parent"
        android:text="ACCEPT"
        android:id="@+id/btnAccep"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnDeclin"
        android:layout_weight="1"
        android:text="DECLINE" />
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btntes"
        android:layout_weight="1"
        android:text="TEST" />
</LinearLayout>
</LinearLayout>
Автор: Scott Wright Источник Размещён: 16.03.2013 08:11

Ответы (1)


0 плюса

23 Репутация автора

Кажется, где-то есть ошибка в Xamarin. Я также получил пустой экран (за исключением панели действий), когда я переименовал .axml-файл туда-сюда и экспериментировал со строками в values ​​\ strings.xml, иногда давая им то же имя, что и .axml-файл. Не уверен, что строки имели какое-либо отношение к этому, но я помню, что получал какую-то ошибку при компиляции в одной точке.

В любом случае, решение для меня было

  1. Сделайте резервную копию содержимого .axml-файла и полностью удалите файл.
  2. Создайте новый .axml-файл с другим именем, отличным от исходного.
  3. Вставьте резервную копию содержимого в новый файл.
  4. Переименуйте новый файл обратно в старое имя.

После этого я сделал тестовый прогон, и все снова заработало.

Автор: Mingo Размещён: 26.03.2015 03:30
Вопросы из категории :
32x32