2016-05-03 2 views
-2

MainActivity.javawenn ich die App auf Emulator sagt es leider die App funktioniert nicht mehr und das Protokoll liest, wie unten

package com.example.intel.dualboot; 

import android.annotation.TargetApi; 
import android.app.AlertDialog; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.os.Build; 
import android.preference.PreferenceManager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v4.widget.SwipeRefreshLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.SpannableString; 
import android.text.method.LinkMovementMethod; 
import android.text.util.Linkify; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements StatusAsyncTask.StatusAsyncTaskListener, SwipeRefreshLayout.OnRefreshListener, MainActivityListener { 
    private static final String TAG = "db::MainActivity"; 

    /* public static final int ACT_INSTALL_ROM  = 1; 
    public static final int ACT_CHANGE_PAGE  = 2; 
    public static final int ACT_SELECT_ICON  = 3; 
    public static final int ACT_UNINSTALL_ROM  = 4; 

    public static final String INTENT_EXTRA_SHOW_ROM_LIST = "show_rom_list";*/ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if(Build.VERSION.SDK_INT == 20) { 
      showDeprecatedLAlert(); 
      return; 
     } 

     setContentView(R.layout.activity_main); 

     // This activity is using different background color, which would cause overdraw 
     // of the whole area, so disable the default background 
     getWindow().setBackgroundDrawable(null); 

     Utils.installHttpCache(this); 
     PreferenceManager.setDefaultValues(this, R.xml.settings, false); 

     m_srLayout = (InSwipeRefreshLayout)findViewById(R.id.refresh_layout); 
     m_srLayout.setOnRefreshListener(this); 

     m_curFragment = -1; 

     m_fragmentTitles = getResources().getStringArray(R.array.main_fragment_titles); 
     m_drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     m_drawerList = (ListView) findViewById(R.id.left_drawer); 

     String[] fragmentClsNames = new String[MainFragment.MAIN_FRAG_CNT]; 
     for(int i = 0; i < fragmentClsNames.length; ++i) 
      fragmentClsNames[i] = MainFragment.getFragmentClass(i).getName(); 

     m_fragments = new MainFragment[MainFragment.MAIN_FRAG_CNT]; 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction t = fragmentManager.beginTransaction(); 
     for(int i = 0; i < m_fragments.length; ++i) { 
      m_fragments[i] = (MainFragment)fragmentManager.findFragmentByTag(fragmentClsNames[i]); 
      if(m_fragments[i] == null) { 
       m_fragments[i] = MainFragment.newFragment(i); 
       t.add(R.id.content_frame, m_fragments[i], fragmentClsNames[i]); 
      } 
      t.hide(m_fragments[i]); 
     } 
     t.commit(); 

     // Set the adapter for the list view 
     m_drawerList.setAdapter(new ArrayAdapter<String>(this, 
       R.layout.drawer_list, m_fragmentTitles)); 
     // Set the list's click listener 
     m_drawerList.setOnItemClickListener(new DrawerItemClickListener()); 


     m_drawerTitle = getText(R.string.app_name); 
     m_drawerToggle = new ActionBarDrawerToggle(
       this, m_drawerLayout, R.string.drawer_open, R.string.drawer_close) { 
      public void onDrawerClosed(View view) { 
       getSupportActionBar().setTitle(m_title); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getSupportActionBar().setTitle(m_drawerTitle); 
      } 
     }; 
     m_drawerLayout.setDrawerListener(m_drawerToggle); 

     final ActionBar bar = getSupportActionBar(); 
     if(bar != null) { 
      bar.setDisplayHomeAsUpEnabled(true); 
      bar.setHomeButtonEnabled(true); 
     } 

     /* if (getIntent().hasExtra(INTENT_EXTRA_SHOW_ROM_LIST) && 
       getIntent().getBooleanExtra(INTENT_EXTRA_SHOW_ROM_LIST, false)) { 
      getIntent().removeExtra(INTENT_EXTRA_SHOW_ROM_LIST); 
      selectItem(1); 
     } else if(savedInstanceState != null) { 
      selectItem(savedInstanceState.getInt("curFragment", 0)); 
     } else { 
      selectItem(0); 
     }*/ 
    } 

    /*@Override 
    protected void onNewIntent(Intent i) { 
     super.onNewIntent(i); 
     if (i.hasExtra(INTENT_EXTRA_SHOW_ROM_LIST) && 
       i.getBooleanExtra(INTENT_EXTRA_SHOW_ROM_LIST, false)) { 
      selectItem(1); 
     } 
    }*/ 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     Utils.flushHttpCache(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt("curFragment", m_curFragment); 
    } 

    @Override 
    public boolean onCreateOptionsMenu (Menu menu) { 

     getMenuInflater().inflate(R.menu.main, menu); 

     m_refreshItem = menu.findItem(R.id.action_refresh); 
     if(!StatusAsyncTask.instance().isComplete()) 
      m_refreshItem.setEnabled(false); 
     return true; 
    } 

    private class DrawerItemClickListener implements ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView parent, View view, int position, long id) { 
      selectItem(position); 
     } 
    } 

    /** Swaps fragments in the main content view */ 
    private void selectItem(int position) { 
     if(position < 0 || position >= m_fragments.length) { 
      Log.e(TAG, "Invalid fragment index " + position); 
      return; 
     } 

     // Insert the fragment by replacing any existing fragment 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction t = fragmentManager.beginTransaction(); 

     if(m_curFragment != -1) 
      t.hide(m_fragments[m_curFragment]); 
     t.show(m_fragments[position]); 
     t.commit(); 

     m_curFragment = position; 

     // Highlight the selected item, update the title, and close the drawer 
     m_drawerList.setItemChecked(position, true); 
     setTitle(m_fragmentTitles[position]); 
     m_drawerLayout.closeDrawer(m_drawerList); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     m_title = title; 
     getSupportActionBar().setTitle(m_title); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     if(m_drawerToggle != null) 
      m_drawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if(m_drawerToggle != null) 
      m_drawerToggle.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem it) { 
     if (m_drawerToggle.onOptionsItemSelected(it)) 
      return true; 

     switch(it.getItemId()) { 
      case R.id.action_refresh: 
       refresh(false); 
       return true; 

      case R.id.action_reboot: 
      { 
       AlertDialog.Builder b = new AlertDialog.Builder(this); 
       b.setTitle("Reboot") 
         .setCancelable(true) 
         .setNegativeButton("Cancel", null) 
         .setItems(R.array.reboot_options, new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialogInterface, int i) { 
           switch (i) { 
            case 0: Utils.reboot(""); break; 
            case 1: Utils.reboot("recovery"); break; 
            case 2: Utils.reboot("bootloader"); break; 
           } 
          } 
         }) 
         .create().show(); 
       return true; 
      } 

      default: 
       return false; 
     } 
    } 

    public void startRefresh(boolean notifyRefreshLayout) { 
     if(notifyRefreshLayout) 
      m_srLayout.setRefreshing(true); 

     if(m_refreshItem != null) 
      m_refreshItem.setEnabled(false); 

     for(int i = 0; i < m_fragments.length; ++i) 
      m_fragments[i].startRefresh(); 

     StatusAsyncTask.instance().setListener(this); 
     StatusAsyncTask.instance().execute(); 
    } 


    @Override 
    public void refresh(boolean b) { 
     refresh(true); 
    } 

    @Override 
    public void setRefreshComplete() { 
     m_srLayout.setRefreshing(false); 

     if(m_refreshItem != null) 
      m_refreshItem.setEnabled(true); 

     for(int i = 0; i < m_fragments.length; ++i) 
      m_fragments[i].setRefreshComplete(); 
    } 

    @Override 
    public void onFragmentViewCreated() { 
     if(++m_fragmentViewsCreated == m_fragments.length) { 
      // postDelayed because SwipeRefresher view ignores 
      // setRefreshing call otherwise 
      m_srLayout.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        Intent i = getIntent(); 
        if(i == null || !i.getBooleanExtra("force_refresh", false)) { 
         startRefresh(true); 
        } else { 
         i.removeExtra("force_refresh"); 
         refresh(false); 
        } 
       } 
      }, 1); 
     } 
    } 

    @Override 
    public void onFragmentViewDestroyed() { 
     --m_fragmentViewsCreated; 
    } 

    @Override 
    public void addScrollUpListener(InSwipeRefreshLayout.ScrollUpListener l) { 
     m_srLayout.addScrollUpListener(l); 
    } 

    @Override 
    public void onStatusTaskFinished(StatusAsyncTask.Result res) { 
     for(int i = 0; i < m_fragments.length; ++i) 
      m_fragments[i].onStatusTaskFinished(res); 
    } 

    @Override 
    public void onRefresh() { 
     refresh(false); 
    } 

    @TargetApi(20) 
    private void showDeprecatedLAlert() { 
     SpannableString msg = new SpannableString("Android Developer preview has bugs"); 
     Linkify.addLinks(msg, Linkify.ALL); 

     AlertDialog.Builder b = new AlertDialog.Builder(this); 
     b.setTitle("Unsupported Android version") 
       .setCancelable(false) 
       .setMessage(msg) 
       .setNegativeButton("Exit Application", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         finish(); 
        } 
       }); 

     AlertDialog d = b.create(); 
     d.show(); 

     TextView msgView = (TextView)d.findViewById(android.R.id.message); 
     msgView.setMovementMethod(LinkMovementMethod.getInstance()); 
    } 

    private DrawerLayout m_drawerLayout; 
    private ListView m_drawerList; 
    private String[] m_fragmentTitles; 
    private MainFragment[] m_fragments; 
    private int m_curFragment; 
    private CharSequence m_title; 
    private ActionBarDrawerToggle m_drawerToggle; 
    private CharSequence m_drawerTitle; 
    private MenuItem m_refreshItem; 
    private int m_fragmentViewsCreated; 
    private InSwipeRefreshLayout m_srLayout; 




} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/drawer_layout"> 

    <com.example.intel.dualboot.InSwipeRefreshLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/refresh_layout" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true"> 
     <FrameLayout android:id="@+id/content_frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </com.example.intel.dualboot.InSwipeRefreshLayout> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="@dimen/lviewdimen" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111" /> 


</android.support.v4.widget.DrawerLayout> 

Stack Trace

E/AndroidRuntime: FATALE AUSNAHME: Haupt Prozess: com.example.intel.dualboot, PID: 23319 java.lang.RuntimeException: Aktivität konnte nicht gestartet werden ComponentInfo {com.beispiel.intel.dualboot/com.beispiel.intel.dualboot.MainActivity}: java.lang.NullPointerException: Es wurde versucht, in das Feld 'android.app zu schreiben .FragmentManagerImpl android.app.Fragment.mFragmentManager‘auf einer null-Objektreferenz bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2330) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2392) bei android.app.ActivityThread.access $ 800 (ActivityThread.java:154) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1308) bei android.os.Handler.di spatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:135) bei android.app.ActivityThread.main (ActivityThread.java:5273) bei java.lang.reflect.Method. Rufen Sie (Native Methode) bei java.lang.reflect.Method.invoke (Methode.java:372) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:908) bei com.android .internal.os.ZygoteInit.main (ZygoteInit.java:703) verursacht durch: java.lang.NullPointerException: Es wurde versucht, in das Feld 'android.app.FragmentManagerImpl android.app.Fragment.mFragmentManager' für ein Null-Objekt zu schreiben Referenz bei android.app.B ackStackRecord.doAddOp (BackStackRecord.java:469) bei android.app.BackStackRecord.add (BackStackRecord.java:464) bei com.example.intel.dualboot.MainActivity.onCreate (MainActivity.java:78) bei android. app.Activity.performCreate (Activity.java:6041) bei android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1109) bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2283) bei android.app. ActivityThread.handleLaunchActivity (ActivityThread.java:2392) bei android.app.ActivityThread.access $ 800 (ActivityThread.java:154) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java: 1308) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:135) bei android.app.ActivityThread.main (ActivityThread.java:5273) bei java.lang.reflect.Method.invoke (native Methode) bei java.lang.reflect.Method.invoke (Method.java:372)

+0

InflateException: Binary XML-Datei Zeile # 8: Fehler aufblähenden Klasse, überprüfen Sie die Paketnamen Ihrer XML-Linie 8 –

+0

können Sie Ihre InSwiperefresh Implementierung posten? – varunkr

Antwort

0

ersetzen

com.exmaple.intel.dualboot.InSwipeRefreshLayout 

mit

android.support.v4.widget.SwipeRefreshLayout 

in der XML-Datei, als die com.exmaple.intel.dualboot.InSwipeRefreshLayout Klasse nicht

+0

java.lang.RuntimeException: Kann Aktivität ComponentInfo starten {com.example.intel.dualboot/com.example.intel.dualboot.MainActivity}: java.lang.ClassCastException: android.support.v4.widget.SwipeRefreshLayout kann nicht gegossen werden zu com.example.intel.dualboot.InSwipeRefreshLayout –

+0

Nein, diese Antwort ist falsch !! – varunkr

+0

verursacht durch: java.lang.ClassCastException: android.support.v4.widget.SwipeRefreshLayout kann nicht in com.example.intel.dualboot.InSwipeRefreshLayout umgesetzt werden –

0
com.exmaple.intel.dualboot.InSwipeRefreshLayout 

prüfen diesen Weg, wenn es in Ihrem xml korrekt ist .Es scheint, den Weg der "InSwipeRefreshLayout" ist nicht corect

0

in Ihrem xml definiert

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/drawer_layout"> 

<com.exmaple.intel.dualboot.InSwipeRefreshLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/refresh_layout" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true"> 
    <FrameLayout android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</com.exmaple.intel.dualboot.InSwipeRefreshLayout> 
<ListView android:id="@+id/left_drawer" 
    android:layout_width="@dimen/lviewdimen" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#111" /> 
</android.support.v4.widget.DrawerLayout> 

die com.exmaple.intel.dualboot.InSwipeRefreshLayout hat, dass die Schreibweise „exmaple“, sollte es beispielsweise sein.

0

Das gepostete Layout funktioniert gut für mich. Überprüfen Sie bitte den Paketnamen richtig com.example.intel.dualboot.InSwipeRefreshLayout, ob vorhanden oder nicht, und säubern und erstellen Sie das Projekt.

Verwandte Themen