2016-12-16 12 views
0

良い一日にキャストすることはできません。それが電話で動くとき、それはOKです。私は携帯電話かタブレットかを表示するために2種類のレイアウトを使用しています。リストビューを実装する2つのフラグメントとその詳細についてもう1つのフラグメントがあります。android.support.v7.widget.AppCompatTextViewは、私はタブレット上で実行されたときにのみ起こるキャスト例外が生じています</p> <p>android.widget.RatingBar

電話の場合、MainActivityはシングルモードで動作していることを検出し、ダミーアクティビティを起動して詳細フラグメントを起動します。デュアルモードの場合、フラグメントを呼び出してその詳細を表示するだけです。これは、常にlistviewの項目をクリックするとトリガされます。これは、MainActivityで呼び出されるメソッドです。

@Override 
public void onItemSelected(Uri wifi) 
{ 
    if (wifi != null) 
    { 
     if (!mDualFragments) 
     { 
      // If showing only FragmentList, start the DetailActivity and 
      // pass it the info 
      Intent intent = new Intent(this, DetailActivity.class); 
      intent.setData(wifi); 
      startActivity(intent); 
     } 
     else 
     { 
      // If showing both fragments, directly tell FragmentDetail to update 
      FragmentDetail mFragmentDetail = (FragmentDetail) getFragmentManager() 
        .findFragmentById(R.id.mFragment_detail); 
      mFragmentDetail.updateFragmentDetail(wifi); 
     } 
    } 
} 

これは、クラッシュことFragmentDetail部分である:

public void updateFragmentDetail(Uri wifi) 
{ 
    mCurrentWifiUri = wifi; 

    if (mCurrentWifiUri != null) 
    { 
     getActivity().setTitle(R.string.title_editor_activity); 
     // Initialize a loader to read the wifi data from the database 
     // and display the current values in the editor 
     getLoaderManager().initLoader(EXISTING_WIFI_LOADER, null, this); 
    } 
    mNameText = (TextView) getActivity().findViewById(R.id.wifi_name); 
    mGeoText = (TextView) getActivity().findViewById(R.id.wifi_geo); 
    mInfoEditText = (EditText) getActivity().findViewById(R.id.wifi_info); 
    mOpinionRatingBar = (RatingBar) getActivity().findViewById(R.id.wifi_opinion); 
    mOpinionRatingBar.setOnRatingBarChangeListener(null); 
} 

これは異なるレイアウトにcontent_mainれる:

<RelativeLayout 

xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
android:layout_height="match_parent"> 

<fragment 
    android:id="@+id/mFragment_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="eu.javimar.wirelessvlc.view.FragmentList" /> 

</RelativeLayout> 

とタブレットのための:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:baselineAligned="false" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="eu.javimar.wirelessvlc.MainActivity" 
tools:showIn="@layout/activity_main"> 

<fragment 
    android:id="@+id/mFragment_list" 
    android:layout_weight="30" 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    class="eu.javimar.wirelessvlc.view.FragmentList" /> 
<fragment 
    android:id="@+id/mFragment_detail" 
    android:layout_weight="70" 
    android:layout_width="0px" 
    android:layout_height="match_parent" 
    class="eu.javimar.wirelessvlc.view.FragmentDetail" /> 

</LinearLayout> 

であります私が得るときのエラータブレットで実行:

Process: eu.javimar.wirelessvlc, PID: 4530 
                    java.lang.ClassCastException: android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RatingBar 
                     at eu.javimar.wirelessvlc.view.FragmentDetail.updateFragmentDetail(FragmentDetail.java:72) 
                     at eu.javimar.wirelessvlc.MainActivity.onItemSelected(MainActivity.java:362) 
                     at eu.javimar.wirelessvlc.view.FragmentList$1.onItemClick(FragmentList.java:112) 

ありがとう!!

答えて

1

宣言エラーのようです。あなたのJavaファイルで、評価バーとして宣言されるかもしれないテキストビュー変数を宣言した場所を確認してください。どちらか、またはmNameTextまたはmGeoTextを確認してください。

問題はxml(idが一致しません)またはTextView変数を宣言しているjavaにあります。ビューにバインドします(間違ったビュー、代わりにRatingBarが見つかりますあなたのエラーを参照してください)。

+0

私に正しい方向を指してくれてありがとう。それはまさにそれでした。 list_itemのxmlには異なる宣言があります – Javi

関連する問題

 関連する問題