4

おはようございます、次のフラグメントがあります。

public class NewIntervPhotoFragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) {
    if(container == null) {
        return null;
    }
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.newintervphoto, container, false);
}
//rest of code goes here 

XML のレイアウト:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText 
    android:id="@+id/newintervPhotoDescription"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/newintervPhotoDescription"
    android:inputType="textCapSentences|textMultiLine"
    android:lines="10"
    android:gravity="left|top"/>

 <Button 
   android:id="@+id/newintervPhotoItem"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" 
   android:background="@android:color/transparent"
   android:text="@string/TakePhoto"
   android:textStyle="@style/TextStyle"
   android:layout_below="@id/newintervPhotoDescription"
   android:layout_centerHorizontal="true"/>

</RelativeLayout> 

そしてstyles.xmlで:

<style 
name="TextStyle">
  <item name="android:textSize">20sp</item> 
  <item name="android:textColor">#FFFFFF</item>
</style> 

上記のスタイルは、同じプロジェクトの他の xml ファイルで問題なく使用されます。この形式では、致命的な例外 (logcat の一部) が発生します。

01-01 11:49:32.635: E/AndroidRuntime(780): FATAL EXCEPTION: main
01-01 11:49:32.635: E/AndroidRuntime(780): java.lang.RuntimeException: Unable to start   activity ComponentInfo{cz.triinfo.terminal/cz.triinfo.terminal.ui.NewIntervPhotoActivity}: android.view.InflateException: Binary XML file line #28: Error inflating class <unknown>
01-01 11:49:32.635: E/AndroidRuntime(780): Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class <unknown>
01-01 11:49:32.635: E/AndroidRuntime(780): Caused by: java.lang.reflect.InvocationTargetException
01-01 11:49:32.635: E/AndroidRuntime(780): Caused by: java.lang.NumberFormatException: unable to parse '@2131165192' as integer

今、例外で置き換えるandroid:textStyle="@style/TextStyle"android:textSize=20sp android:textColor=FFFFFF消えます。私の質問は次のとおりです。最初のケース、つまり xml で何が間違っていましたかandroid:textStyle。より一般的には、フラグメントでスタイルを使用できますか?

前もって感謝します!styles.xml は res/values に配置され、次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style 
    name="TextStyle">
    <item name="android:textSize">20sp</item> 
    <item name="android:textColor">#FFFFFF</item>
  </style>
</resources> 

したがって、問題は実際には他の場所にあります。

4

2 に答える 2

4

スタイルを適用するには、android:textStyle の代わりに android:textAppearance を使用する必要があります。

于 2013-04-26T18:56:50.690 に答える
1

style.XML が Android 開発 Web サイトの形式とどのように一致するかを確認してください:こちら。タグを見逃している可能性がありresourcesます。

[編集] : 最初のコメントを読んで、ここで言及する価値があると思いました (前述のリンクをチェックアウトしなかった場合に備えて):

<resources>
    Required
This must be the root node. No attributes.

これを追加すると、styles.xml は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="TextStyle">
    <item name="android:textSize">20sp</item> 
    <item name="android:textColor">#FFFFFF</item>
  </style>
</resources>

それを試してみて、それが本当の解決策ではないと言うのはどうですか?

于 2013-01-01T12:32:29.733 に答える