2017-12-28 8 views
0

MvvmCross가있는 Xamarin.Android 응용 프로그램을 작성하고 있습니다. 내 ActivityMvxAppCompatActivity에서 상속 받아 파편을 사용할 수 있기를 바랍니다. 내가 MvxAppCompatActivityMvxActivity로 변경하는 경우 잘 작동MvxAppCompatActivity를 사용할 때 오류가 발생했습니다.

Failed resolution of: Landroid/support/v7/appcompat/R$drawable; Didn't find class "android.support.v7.appcompat.R$drawable" on path: DexPathList...

하지만 ... 왜 :

public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel 
{ 
    public new TViewModel ViewModel 
    { 
     get { return base.ViewModel; } 
     set { base.ViewModel = value; } 
    } 
} 

ActivityOnCreate에이 오류를 얻을 : 여기 내 기본 클래스는?

+1

프로젝트 타겟 버전과 최소 버전은 무엇입니까? –

+0

분 버전은 API 레벨 15이며 대상은 API 26입니다 (최신 설정을 사용하려면 자동 설정) – Darius

+0

온라인 repo를 통해 문제를 재현 할 수있는 기본적인 데모를 공유 하시겠습니까? –

답변

3

솔루션을 다운로드하여 Android 프로젝트를 빌드하려고했습니다. 이 같은 오류 18 명 발생 실패 : login_screen.axml에서 당신이 가지고 본을

1) :

error: No resource identifier found for attribute 'loginButtonBackgroundColor' in package ...

그래서 솔루션의 작은 검사 후, 나는 당신의 문제를 해결하기 위해 다음 단계를했다 이 라인 : 불필요한

xmlns:[YOURNAMESPACE]="http://schemas.android.com/apk/res/[YOUR PACKAGE]"

. 제거하고 라인을 [YOURNAMESPACE]:loginButtonBackgroundColor=...으로 변경 한 후 local:loginButtonBackgroundColor=...으로 빌드가 성공합니다.

2) 일부 레이아웃 파일은 /drawable 폴더 (button_round_corner.xml, input_box.xmllogin_button.xml) 안에 있습니다. 나는 그들을 /layout 폴더로 이동하고 변경 사항이 생성 된 문제를 수정했습니다 (2 개만).

3) 만든 Setup 클래스는 MvxAppCompatSetup에서 상속됩니다.

4) LoginButton 컨트롤에 RegisterAttribute을 추가했습니다. 그래서 클래스 정의는 다음과 같습니다 :

using Android.Runtime; 
... 

namespace Xxx.Droid.Components 
{ 
    [Register(nameof(LoginButton))] 
    public class LoginButton : FrameLayout, IMvxNotifyPropertyChanged 
    { 
     ... 
    } 
} 

그리고 그게 전부입니다! 아마도 (2)는 필요하지 않았지만 여기에 그대로 두었습니다.

+0

예, 동일한 경험을했기 때문에 @Darius가 자신의 질문에서 설명했던 오류를 얻을 수 없었습니다 : Landroid/support/v7/appcompat/R $ drawable; 경로에 "android.support.v7.appcompat.R $ drawable"클래스를 찾지 못했습니다. – Plac3Hold3r

+0

제 대답 @ Plac3Hold3r을 편집했습니다 : – nmilcoff

+0

레이아웃 디렉토리 문제를 발견했습니다. 그 원인이 무엇입니까? 에뮬레이터 또는 장치에서 실행할 때 예외가 있습니까? 나는 왜 그것이 나에게 예외가 아니 었는지 알아 내려고 노력하고있다. 나는 v26 에뮬레이터를 실행하고 있었다. – Plac3Hold3r

1

여러 가지 일 수 있지만 아마 일부 안드로이드 지원 패키지가 부족합니다. 주로 Xamarin.Android.Support.Design이 부족하면 오류가 발생합니다. 따라서 추가했는지 확인하고 추가하지 않으면 문제가 해결되는지 확인하십시오. 다른 안드로이드 지원 패키지가 부족한 경우가 많습니다.

+0

'Xamarin.Android.Support.Design' ver 26.1.0.1이 있는데, 무언가를 놓친다는 의미가 있지만 쓸모없는 지원 패키지를 추가하려고 시도했습니다. – Darius

+1

모두 가지고 있습니까? 동일한 버전의 패키지 중 무엇입니까? – fmaccaroni

+0

Xamarin.Android.Support. * 예 – Darius

관련 문제