2016-04-06 15 views
0

Ich benutze die Symbolleiste für meine App funktioniert es gut in der Lollipop-Version.Aber in der vorherigen Version wird die App abgestürzt.Ich habe versucht, die Stile auf Theme.AppCompat.NoActionBar aber es zu ändern hat nicht funktioniert.Fehler beim Aufblasen der Klasse für Symbolleiste

Styles:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
</style> 
<style name="AppThemes" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
</style> 

<style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowBackground">@color/windowBackground</item> 
</style> 

XmlToolbar:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar   xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/colorPrimary" 
android:elevation="4dp" 
android:minHeight="?attr/actionBarSize" 
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

Logcat:

java.lang.RuntimeException: Unable to start activity ComponentInfo{nidhinkumar.webviewss/nidhinkumar.webviewss.ParseMainAct}: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.Toolbar 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2338) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
     at android.os.Handler.dispatchMessage(Handler.java:110) 
     at android.os.Looper.loop(Looper.java:193) 
     at android.app.ActivityThread.main(ActivityThread.java:5299) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v7.widget.Toolbar 
     at android.view.LayoutInflater.createView(LayoutInflater.java:620) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696) 
     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:816) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:305) 
     at android.app.Activity.setContentView(Activity.java:1966) 
     at nidhinkumar.webviewss.ParseMainAct.onCreate(ParseMainAct.java:36) 
     at android.app.Activity.performCreate(Activity.java:5286) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302) 

ParseMainAct:

public class ParseMainAct extends Activity{ 
private static String TAG = ParseMainAct.class.getSimpleName(); 

private Toolbar mToolbar; 
private ListView listView; 
private List<Message> listMessages = new ArrayList<>(); 
private MessageAdapter adapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.parseact_main); 
    listView = (ListView) findViewById(R.id.list_view); 
    mToolbar = (Toolbar) findViewById(R.id.toolbar); 


    adapter = new MessageAdapter(this); 


    listView.setAdapter(adapter); 

    Intent intent = getIntent(); 




} 

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    String message = intent.getStringExtra("message"); 

    Message m = new Message(message, System.currentTimeMillis()); 
    listMessages.add(0, m); 
    adapter.notifyDataSetChanged(); 
} 

private class MessageAdapter extends BaseAdapter { 

    LayoutInflater inflater; 

    public MessageAdapter(Activity activity) { 
     inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return listMessages.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return listMessages.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     if (view == null) { 
      view = inflater.inflate(R.layout.parselist_row, null); 
     } 

     TextView txtMessage = (TextView) view.findViewById(R.id.message); 
     TextView txtTimestamp = (TextView) view.findViewById(R.id.timestamp); 

     Message message = listMessages.get(position); 
     txtMessage.setText(message.getMessage()); 

     CharSequence ago = DateUtils.getRelativeTimeSpanString(message.getTimestamp(), System.currentTimeMillis(), 
       0L, DateUtils.FORMAT_ABBREV_ALL); 

     txtTimestamp.setText(String.valueOf(ago)); 

     return view; 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 

    return super.onOptionsItemSelected(item); 
} 

}

parse_main.xml:

<LinearLayout 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:orientation="vertical" 
tools:context=".MainActivity"> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <include 
     android:id="@+id/toolbar" 
     layout="@layout/my_tool_bar" /> 
</LinearLayout> 

<ListView 
    android:id="@+id/list_view" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"></ListView> 

+0

Wie versuchen Sie, die Symbolleiste aufzublasen? –

+0

In Java oder in XML –

+0

In Java verwende ich so mToolbar = (Toolbar) findViewById (R.id.toolbar); –

Antwort

0

Sie Ihre toolbar.xml innerhalb Sie erstellen, sollten Layout:

<RelativeLayout 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" 
    tools:context="xxxxxx"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentTop="true" 
     android:orientation="vertical"> 

     <include 
      android:id="@+id/main_menu_activity_toolbar" 
      layout="@layout/XmlToolbar" /> 

Und dann aufblasen Ihre Aktivität:

mToolbar = (Toolbar) findViewById(R.id.main_menu_activity_toolbar); 

EDIT

Verwenden NoActionBar in Ihrem Thema Basisanwendung

<!-- Base application theme. --> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
    </style> 
+0

ja ich habe getan, immer noch das gleiche Problem –

+0

Ihr Problem ist hier: at nidhinkumar.webviewss.ParseMainAct.onCreate (ParseMainAct.java:36). Könnten Sie diesen Code teilen? –

+0

Ich habe die ParseMainAct auch pls hinzugefügt. –

0

Mai irgendwo in Ihrer App AppTheme oder 'AppThemes' verwendet wurde, sein. Sie sehen, dass Sie übergeordnete Thema als Theme.AppCompat.Light.DarkActionBar geben. Das bedeutet, dass Ihre Aktivität mit diesem Thema ActionBar hat.

Sie können nicht verwenden ToolBar Solange ActionBar ist da.

ändern gerade Theme.AppCompat.Light.DarkActionBar

-Theme.AppCompat.Light.NoActionBar. und du bist gut zu gehen.

Hoffe, das wird Ihnen helfen.

aktualisieren

Ihr Set ToolBar als Ihr ActionBar

mToolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(mToolbar); 
+0

Ich habe es geändert, aber es hat nicht funktioniert –

+0

haben Sie in Style-V14 einchecken? Ich denke, es auch haben Sie es –

+0

nicht in meine res zu ändern habe ich nur einen style.xml –

1

Sie haben unten Lutscher aus zwei styles.xml Datei eine für Gerät und andere styles.xml (v-21) Gerät Lutscher und über Version. Probe von style.xml

<style name="MyAppThemes" parent="MyTheme.Base"> 
<!-- Customize your theme here. --> 
</style> 

<style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
<item name="android:windowNoTitle">true</item> 
<item name="windowActionBar">false</item> 
<item name="colorPrimary">@color/colorPrimary</item> 
<item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
<item name="colorAccent">@color/colorAccent</item> 
<item name="android:windowBackground">@color/windowBackground</item> 
</style> 

Probe des Stils.xml (v-21)

<style name="MyAppThemes" parent="MyAppThemes.Base"> 
<item name="android:windowActionBar">false</item> 
<item name="android:colorPrimary">@color/colorPrimary</item> 
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
<item name="android:colorAccent">@color/colorAccent</item> 
<item name="android:windowBackground">@color/windowBackground</item> 
</style> 

Jetzt in Ihrem AndroidMainfest.xml Anwendung ändern Thema

android:theme="@style/MyAppThemes"> 

Ich hoffe, dass es Ihr Problem lösen.