2015-10-26 21 views
6

Tôi mới sử dụng Appdevelopment và cố gắng thay đổi Theme của ứng dụng trong Android Studio 1.4.1 (mới nhất) trên Windows 10 x64, nhưng tôi luôn nhận được ngoại lệ, dưới đây là những gì tôi làm: (vâng, bây giờ tôi đã có rất nhiều câu hỏi, nhưng tôi không thể tìm thấy một câu trả lời)Hiển thị vấn đề khi thay đổi chủ đề

  1. Bắt đầu dự án (tên: TEST)
  2. Đối với điện thoại và máy tính bảng (min SDK:. API 15 Android 4.0. 3 IceCreamSandwich)
  3. Chọn Hoạt động trống (tên: MainActivity)
  4. Đi tới activity_main.xml -> xem thiết kế
  5. Chọn Nexus 4; API 23; Holo Light/Holo Dark/Ánh sáng vật liệu/Chất liệu Tối; (API và điện thoại không quan trọng => cố gắng rất nhiều)
  6. EXCEPTION:

Rendering vấn đề

Các lớp sau đây không thể được khởi tạo:

  • android .support.design.widget.CoordinatorLayout
  • android.support.design.widget.AppBarLayout

Mẹo: [...]

Ngoại lệ chi tiết

java.lang.IllegalArgumentException: Bạn cần phải sử dụng một chủ đề Theme.AppCompat (hoặc hậu duệ) với thư viện thiết kế . tại android.support.design.widget.ThemeUtils.checkAppCompatTheme (ThemeUtils.java:34) tại android.support.design.widget.CoordinatorLayout. (CoordinatorLayout.java:178) tại android.support.design.widget.CoordinatorLayout . (CoordinatorLayout.java:172) tại sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) tại sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) tại sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java : 45) tại java.lang.reflect.Constructor.newInstance (Constructor.java:422) tại org.jetbrains.android.uipreview.ViewLoader.createNewInstance (ViewLoader.java:458) tại org.jetbrains.android.uipreview .ViewLoader.loadClass (ViewLoader.java:170) tại org.jetbrains.android.uipreview.ViewLoader.loadView (ViewLoader.java:103) tại com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView (LayoutlibCallbackImpl.java : 190) tại android.view.BridgeInflater.loadCustomView (BridgeInflater.java:218) tại android.view.BridgeInflater.createViewFromTag (BridgeInflater.java:145) tại android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) tại android.view.LayoutInflater.inflate (LayoutInflater.java:492) tại android.view.LayoutInflater.inflate (LayoutInflater.java:394) tại com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate (RenderSessionImpl .java: 223) tại com.android.layoutlib.bridge.Bridge.createSe ssion (Bridge.java:426) tại com.android.ide.common.rendering.LayoutLibrary.createSession (LayoutLibrary.java:350) tại com.android.tools.idea.rendering.RenderTask $ 2.compute (RenderTask.java WEBC10) tại com.android.tools.idea.rendering.RenderTask $ 2.compute (RenderTask. java: 498) tại com.intellij.openapi.application.impl.ApplicationImpl.runReadAction (ApplicationImpl.java:888) tại com.android.tools.idea.rendering.RenderTask.createRenderSession (RenderTask.java:498) tại com.android.tools.idea.rendering.RenderTask.access $ 600 (RenderTask.java:72) tại com.android.tools.idea.rendering.RenderTask $ 3.call (RenderTask.java:610) tại com.android. tools.idea.rendering.RenderTask $ 3.call (RenderTask.java:607) tại com.android.tools.idea.rendering.RenderService.runRenderAction (RenderService.java:366) at com .android.tools.idea.rendering.RenderTask.render (RenderTask.java:607) tại com.android.tools.idea.rendering.RenderTask.render (RenderTask.java:629) tại com.intellij.android.designer .designSurface.AndroidDesignerEditorPanel $ 6.run (AndroidDesignerEditorPanel.java:480) tại com.intellij.util.ui.update.MergingUpdateQueue.execute (MergingUpdateQueue.java:320) tại com.intellij.util.ui.update.MergingUpdateQueue. thực hiện (MergingUpdateQueue.java:310) tại com.intellij.util.ui.update.MergingUpdateQueue $ 2.run (MergingUpdateQueue.java:254) tại com.intellij.util.ui.update.MergingUpdateQueue.flush (MergingUpdateQueue.java : 269) tại com.intellij.util.ui.update.MergingUpdateQueue.flush (MergingUpdateQueue.java:227) tại com.intellij.util.ui.update.MergingUpdateQu eue.run (MergingUpdateQueue.java:217) tại com.intellij.util.concurrency.QueueProcessor.runSafely (QueueProcessor.java:238) tại com.intellij.util.Alarm $ Yêu cầu $ 1.run (Alarm.java:351) tại java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java WEBC11) tại java.util.concurrent.FutureTask.run (FutureTask.java:266) tại java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) tại java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) tại java.lang.Thread.run (Thread.java:745)

AndroidManifest.xml: (premade)

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="de.minding.test" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

MainActivity.java: (premade)

package de.minding.test; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

activity_main.xml: (premade)

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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:layout_width="match_parent" 
    android:layout_height="match_parent" android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 

    <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" 
     android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar android:id="@+id/toolbar" 
      android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

là gì vậy ?? Tôi sử dụng các công cụ premade và nó không hoạt động? -_- Không mát mẻ.

Xin vui lòng trợ giúp!-Minding

+0

Lấy lỗi tương tự –

+0

Yeah, tôi đã tìm kiếm Google và có thể tin được rất nhiều thiếu sót xé. Loại buồn. _-Minding_ – Minding

Trả lời

3

Hãy thử chọn SDK tối thiểu cao hơn cho dự án (Lollipop hoặc Marshmallow)

Nếu bạn thực sự cần tối thiểu cũ, hãy thử tạo dự án với một hoạt động có sản phẩm nào hoặc không có hoạt động ở tất cả và bắt đầu từ đó .

+0

Tôi có thể thay đổi chủ đề khi tôi sử dụng một hoạt động trống whitout nhận được lỗi, nhưng (làm thế nào) tôi có thể sử dụng một menu tràn với điều này? Nếu tôi sử dụng Lollipop tôi chỉ lập trình cho dưới 10% của tất cả người dùng Android, phải không? Tôi muốn có một mức cao (API 15: 94%). - _Minding_ – Minding

+1

Lollipop từ 1% trong tháng 1 hiện đã có Marshmallow ở mức 26%. Nó sẽ được phát triển vì vậy bạn cần phải xem xét liệu điều này là giá trị phức tạp. – taurelas

+0

Trên thực tế, việc tạo dự án cho Lollipop sẽ khắc phục sự cố hiển thị cho các dự án có SDK thấp hơn. – taurelas

0

Hãy thử thay thế

android:theme="@style/AppTheme.AppBarOverlay" 

với

android:theme="@style/Theme.AppCompat.Light" 

bên CoordinatorLayout

Các vấn đề liên quan