Почему происходит сбой моего приложения Android, когда я пытаюсь получить доступ к строковым ресурсам? - PullRequest
4 голосов
/ 13 августа 2011

Я делаю учебник HelloLinearLayout, но использую строковые ресурсы вместо жесткого кодирования строк непосредственно в XML, как учебник. Когда я запускаю приложение, используя строковые ресурсы, оно сразу падает. Когда я жестко кодирую строки в код XML, все работает нормально. Любые идеи относительно того, почему мое приложение падает? Спасибо

main.xml

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

    <LinearLayout 
        android:orientation="horizontal"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1">
            <TextView
                android:text="@string/box1text"
                android:gravity="center_horizontal"
                android:background="@string/box1color"
                android:layout_height="fill_parent"
                android:layout_width="wrap_content"
                android:layout_weight="@string/box1weight"
                />
            <TextView
                android:text="@string/box2text"
                android:gravity="center_horizontal"
                android:background="@string/box2color"
                android:layout_height="fill_parent"
                android:layout_width="wrap_content"
                android:layout_weight="@string/box2weight"
                />
            <TextView
                android:text="@string/box3text"
                android:gravity="center_horizontal"
                android:background="@string/box3color"
                android:layout_height="fill_parent"
                android:layout_width="wrap_content"
                android:layout_weight="@string/box2weight"
                />
            <TextView
                android:text="@string/box4text"
                android:gravity="center_horizontal"
                android:background="@string/box4color"
                android:layout_height="fill_parent"
                android:layout_width="wrap_content"
                android:layout_weight="@string/box4weight"
                />
            </LinearLayout>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello World, HelloLinearLayoutActivity!</string>
        <string name="app_name">HelloLinearLayout</string>
        <string name="box1text">red</string>
        <string name="box1color">#aa0000</string>
        <string name="box1weight">1</string>
        <string name="box2text">green</string>
        <string name="box2color">#00aa00</string>
        <string name="box2weight">1</string>
        <string name="box3text">blue</string>
        <string name="box3color">#0000aa</string>
        <string name="box3weight">1</string>
        <string name="box4text">yellow</string>
        <string name="box4color">#aaaa00</string>
        <string name="box4weight">1</string>
    </resources>

hellolinearlayoutactivity.java

package com.example.hellolinearlayout;

import android.app.Activity;
import android.os.Bundle;

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

Ответы [ 2 ]

4 голосов
/ 13 августа 2011

Вы не можете установить цвет фона в виде строк.Создайте файл XML по адресу res / values ​​/ colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
  <color name="box4color">#aaaa00</color>
</resources>

, затем используйте, как показано ниже.

1 голос
/ 13 августа 2011

Я это из-за android:background="@string/box1color". Почему, потому что атрибут background вмещает целочисленные значения в форме HEXADECIMAL. Но вы использовали строковые ресурсы. Я думаю, что это проблема. Но я не уверен ... Насколько я знаю, я догадался об этом. Если этот контент содержит неверную информацию, извините.

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