Программирование на Android, мои файлы макета XML не будет обновляться при сборке проекта - PullRequest
0 голосов
/ 03 декабря 2011

Сейчас я работаю над тестовым проектом, чтобы попрактиковаться в некоторых основных функциях макета Android, прежде чем приступить к работе над своим проектом. На данный момент я испытываю некоторые кнопки и изменения активности, и получил стек на одну неприятную проблему.

Сначала я не был уверен, почему мой новый макет просто не будет отображать некоторые кнопки, которые я на нем поместил, но теперь проблема становится более странной. Как я скоро покажу в своем коде, у меня есть два XML-файла макета, один для обработки основного действия и один для второго. Сначала все было хорошо, но потом я заметил, что не вижу одинокой кнопки на втором макете, и я не мог понять, почему. я пытался изменить 2-й макет, чтобы он был основным макетом (просто я изменил setContentView () в основном действии), но, как ни странно, программа продолжала вызывать оригинальный макет вместо того, который указан в коде (конечно, Я проверил ошибки, или, если это было на самом деле, было сделано, я также специально вставил ошибки и проверил, что программа не запускается). Видя, что может быть какая-то более серьезная проблема, я попытался добавить еще одну кнопку в основной XML-файл макета, но ни в коем случае программа не начинала со старого.

Я искал ответ, пытался очистить свой проект и перестроить его, искал пропущенные файлы в моей строке xml, но ничего не смог исправить, в настоящий момент я ничего не понимаю о том, что пошло не так.

Я предполагаю, что если я начну с проекта все будет хорошо, но я не смогу начать новый проект каждый раз, когда возникают проблемы. (особенно если я делаю что-то не так).

вот мой код:

Основная деятельность: $ пакет test.android.mark.III;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;

public class AndroidMarkIII extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);

        final Button button1 = (Button) findViewById(R.id.button1); // bind button to the view from the xml
    button1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            openNewWindow(v);
        }
    });   
    final Button button2 = (Button) findViewById(R.id.button2);// bind button to the view from the xml

    button2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            openPopupWindow(button2);
        }
    });
    }

protected void openNewWindow(View v) {
    Intent listWindowIntent = new Intent(v.getContext(), ListWindowActivity.class);
    startActivityForResult(listWindowIntent, 0);
}
}

Мое второе занятие: пакет test.android.mark.III;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ListWindowActivity extends Activity {

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

Button returnButton = (Button) findViewById(R.id.return_button);
returnButton.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        setResult(RESULT_OK, intent);
        finish();

    }
});

}

}

Мой основной файл XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
    android:id="@+id/title1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/title1"
    android:layout_centerHorizontal="true" />
<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/title1"
    android:layout_centerHorizontal="true"
    android:text="@string/push_button"
    android:padding="50dp" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/button1"
    android:text="@string/popup_button"
    android:layout_centerHorizontal="true"
    android:padding="75dp" />
<TextView   //Was added later for check reason (wasn't seen on any run)
    android:id="@+id/end"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/title1" 
    android:layout_centerHorizontal="true"/>


</RelativeLayout>

мой второй XML (для второго упражнения)

<TextView
    android:id="@+id/list_text"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="Hello World" />

<Button 
    android:id="@+id/return_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/return_button"
    android:visibility="visible">
</Button>
</LinearLayout>

и в любом случае мои строки xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="hello">Hello World, AndroidMarkIIIActivity!</string>
<string name="app_name">AndroidMarkIII</string>
<string name="title1">This is a test program</string>
<string name="push_button">Push Button - 50dp</string>
<string name="popup_button">Popup Button - 75dp</string>
<string name="return_button">return Button - 10dp</string>
<string name="close_popup_button">X</string>
<string name="popup_text">this is popup - 25dp</string>
<string name="list_window_app_name">AndroidMarkIII2ndWindow</string>
</resources>

и мой самый скучный xml

<uses-sdk android:minSdkVersion="14" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".AndroidMarkIII" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ListWindowActivity">
    </activity>

</application>

</manifest>

Я действительно надеюсь, что кто-то сможет решить эту проблему, потому что это на самом деле кажется действительно глупой проблемой, но тем не менее, я не могу продолжать работать, пока она у меня есть.

Заранее спасибо Oren

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Проблема возникает из-за неправильной разметки XML.

В main1.xml вы используете RelativeLayout, поэтому вы должны указать каждому представлению, где располагаться относительно других представлений или самого ViewGroup. Попробуйте добавить android:layout_below="@id/button2" к последнему TextView в main1.xml.

Как указал @alextsc, в main2.xml вы говорите TextView заполнить весь экран fill_parent. Измените высоту на wrap_content и установите android:orientation="vertical" в родительском элементе LinearLayout как по умолчанию horizontal.

0 голосов
/ 03 декабря 2011

сначала все было хорошо, но потом я заметил, что не вижу кнопки «Одинокий» на втором макете и не могу понять, почему.

Первый извсе, ваш XML для второго действия кажется неполным.Вы по крайней мере пропускаете открытие LinearLayout здесь.Я предполагаю, что это присутствует, и больше ничего не пропущено (вероятно, просто ошибка копирования и вставки) .

То, что вы сделали там, имеет TextView, который установлен на fill_parent по ширинеи высота.Причина, по которой вы не видите свою кнопку, заключается в том, что для нее просто не осталось места.Текстовое представление полностью заполняет родительский LinearLayout (если вы хотите визуализировать это, добавьте android:background="#ff0000" к текстовому просмотру. Его фон становится красным и заполняет экран) .Вы можете изменить ширину и высоту текстового представления на wrap_content для начинающих, что должно сделать кнопку видимой.Если вы намереваетесь определенное распределение макетов для двух, взгляните на весовой атрибут LinearLayouts.

Когда дело доходит до неизменяемых раскладок: я не уверен, что здесь происходит.Убедитесь, что ваши XML-файлы называются main1.xml и main2.xml.Существует также файл макета по умолчанию, который называется main.xml.Убедитесь, что вы не отредактировали это случайно. (звучит так, будто вы мне эту часть накрыли, просто чтобы быть абсолютно уверенным)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...