2015-04-06 53 views
0

該應用程序在以前的Android版本中工作正常,但在Android 5.0+中不起作用。我猜測在向後兼容性方面存在一些問題。我試圖從日誌中確定應用程序崩潰的原因,但不能。從主要調用一個類的App Force關閉

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "Clear 1"); 
    setContentView(R.layout.activity_dj); 

    Log.d(TAG, "Clear 2");` 

正如你所看到的,上面的類的片段設置指定的佈局。

activity_dj.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/linearLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".DJActivity" > 

<fragment 
    android:id="@+id/frag_dj_music" 
    android:name="com.example.musicsaround.dj.DJMusicFragment" 
    android:layout_width="match_parent" 
    android:layout_height="300dp" /> 

<fragment 
    android:id="@+id/frag_djs_devices" 
    android:name="com.example.musicsaround.dj.ServerDeviceListFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<TextView 
    android:id="@+id/txt_dj_time" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="DJ Time" /> 

日誌顯示 「清除1」 而不是 「清除2」。請參考以下日誌:

04-06 14:00:58.699: D/DJ Mode Activity(28278): Clear 1 
04-06 14:00:58.719: E/AndroidRuntime(28278): FATAL EXCEPTION: main 
04-06 14:00:58.719: E/AndroidRuntime(28278): Process: com.example.musicsaround, PID: 28278 
04-06 14:00:58.719: E/AndroidRuntime(28278): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.musicsaround/com.example.musicsaround.dj.DJActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread.access$800(ActivityThread.java:144) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.os.Handler.dispatchMessage(Handler.java:102) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.os.Looper.loop(Looper.java:155) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread.main(ActivityThread.java:5696) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at java.lang.reflect.Method.invoke(Native Method) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at java.lang.reflect.Method.invoke(Method.java:372) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) 
04-06 14:00:58.719: E/AndroidRuntime(28278): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:404) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.Activity.setContentView(Activity.java:2156) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at com.example.musicsaround.dj.DJActivity.onCreate(DJActivity.java:64) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.Activity.performCreate(Activity.java:5958) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
04-06 14:00:58.719: E/AndroidRuntime(28278): ... 10 more 
04-06 14:00:58.719: E/AndroidRuntime(28278): Caused by: java.lang.ClassCastException: com.example.musicsaround.dj.DJMusicFragment cannot be cast to android.support.v4.app.Fragment 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.support.v4.app.Fragment.instantiate(Fragment.java:394) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.support.v4.app.Fragment.instantiate(Fragment.java:369) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272) 
04-06 14:00:58.719: E/AndroidRuntime(28278): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
04-06 14:00:58.719: E/AndroidRuntime(28278): ... 20 more 

編輯: DJMusicFragment類擴展片段,是像按鈕和其事件的所有用戶交互元素的容器類。我附上了最初的幾行代碼:

public class DJMusicFragment extends Fragment implements OnCompletionListener, 
    SeekBar.OnSeekBarChangeListener 
{ 
private String isbtnPlay = "no"; 

private ImageButton btnPlay; 
private ImageButton btnNext; 
private ImageButton btnPrevious; 
private ImageButton btnPlaylist; 
private ImageButton btnRepeat; 
private ImageButton btnShuffle; 
private SeekBar songProgressBar; 
private TextView songTitleLabel; 
private TextView songCurrentDurationLabel; 
private TextView songTotalDurationLabel; 
private ProgressDialog syncProgress; 
............. 

謝謝!

+2

'ClassCastException:com.example.musicsaround.dj.DJMusicFragment無法轉換爲android.support.v4.app.Fragment'。你可以發佈DJMusicFragment的類定義嗎? – Rajesh 2015-04-06 08:47:13

+0

@Rajesh請參閱編輯。謝謝! – motox 2015-04-07 05:23:38

回答

0

您的課DJMusicFragment必須延伸android.support.v4.app.Fragment
這是因爲您使用支持庫。