반응형

나는 궁극적인 목적이 각 하단 메뉴들을 각각의 네비게이션을 시각적으로 정리를 하고싶었다. 

 

근데.. 코틀린에서는 금방 찾았지만 자바에서는 각각의 네비게이션 분리하는 작업을 찾기 힘들었다. 

생각의 전환으로 쉽게 해결해서 참.. 좋지만서도 허무하다. 

좋은 방법이 있는거 같긴한데.. 찾아봐야겠다. 

 

 

  1. 메뉴 설정 

 

2.각각의 네비게이션 등록 

3. Fragment들은 만들어줬다는 가정하에 

 

 

4.여기서 Fragment bottomViewNavigation이랑 연결을 해주고나서
fragment navGraph 분기처리 해주면 된다.
그러면 onDestinationChanged 될것이다. 

 

반응형
반응형

매번 .. 셋팅할때마다 찾으니.. ADB 셋팅을..... 남겨놓아야겠음. 

 

#JAVA_HOME
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home

#Android Home
export ANDROID_HOME=/Users/사용자이름/Library/Android/sdk

export PATH=$JAVA_HOME/bin:$PATH
export PATH=$PATH:$ANDROID_HOME
export PATH=/Users/사용자이름/Library/Android/sdk/platform-tools:$PATH
export PATH=/Users/사용자이름/Library/Android/sdk/tool:$PATH
export PATH=/Users/사용자이름/Library/Android/sdk/emulator:$PATH


#SVN Home
export SVN_HOME=/opt/homebrew/bin/svn

 

vi ~/.bash_profile 에 들어가서 수정하고 source ~/.bash_profile 등록 

 

 

반응형
반응형

매번 사용하는 BaseActivity , Fragment 

음.. 생각해보니 Adapter를 만들생각을 안해봄..그래서 만들었다.  ( 딱히 공통으로 들어갈만한게 없어도 이긴한데..ㅋ  )

 

 

1. BaseAdapter 

- bindtViewHolder 메서드는 onCreateViewHolder에서 B 타입으로 넘겨줘야하는데 딱히 방법이 생각나지 않았다..ㅠ 

public abstract class BaseAdapter<
        A extends ViewDataBinding,
        B extends RecyclerView.ViewHolder
        >
        extends RecyclerView.Adapter<B> {


    protected abstract @LayoutRes
    int getLayout();


    protected abstract B bindViewHolder(A binding);


    @NonNull
    @Override
    public B onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        A binding = DataBindingUtil.inflate(
                LayoutInflater.from(parent.getContext())
                , getLayout(), parent
                , false);

        return bindViewHolder(binding);
    }
}

 

2. BaseViewHolder 

abstract public class BaseViewHolder<
        A extends ViewDataBinding
        >
        extends RecyclerView.ViewHolder {

    protected A mBinding;

    public BaseViewHolder(A a) {
        super(a.getRoot());
        mBinding = a;
    }

}

 

--------------사용 ------- 

 

1. Adapter

- 확실히 사용이 간결해졌다. 

public class MainAdapter
        extends BaseAdapter<
        ItemTextBinding
        , MainViewHolder
        > {

    private final ArrayList<String> mArr;

    public MainAdapter(ArrayList<String> mArr) {
        this.mArr = mArr;
    }

    @Override
    protected int getLayout() {
        return R.layout.item_text;
    }

    @Override
    protected MainViewHolder getViewHolder(ItemTextBinding binding) {
        return new MainViewHolder(binding);
    }

    @Override
    public void onBindViewHolder(@NonNull MainViewHolder holder, int position) {
        holder.bind(mArr.get(position));
    }

    @Override
    public int getItemCount() {
        return mArr.size();
    }
}

2. ViewHolder

public class MainViewHolder
        extends BaseViewHolder<ItemTextBinding> {

    public MainViewHolder(ItemTextBinding itemTextBinding) {
        super(itemTextBinding);
    }

    public void bind(String row) {
        mBinding.fragTextview.setText(row);
    }
}

 

https://github.com/ShinHoChull/MVVM/tree/master/app/src/main/java/com/m2comm/test/base

 

GitHub - ShinHoChull/MVVM: MVVM Test

MVVM Test. Contribute to ShinHoChull/MVVM development by creating an account on GitHub.

github.com

 

반응형
반응형

-상황. 

폰트를 만지거나 스튜디오 자체를 만지지 않았다. 

단지  안드로이드 JDK 11로 올렸다.

 

그러더니 아래 이미지 처럼 

 

 

Find in Files에서 한글 자체가 깨져서 나옴. 

 

검색 상황 뭐 다해봤는데 안된다. ( contents> lib> layout 어쩌구 이 파일 찾으라는데 파일이없음.. ㅡ.ㅡ  )

 

혹시나 해서 전체 스튜디오 폰트를 바꿔봤다. 

*Mac

Preferences > Appearance > user Custom font 를 기존 내가 사용하는 폰트로 하니 해결됨.

 

 

반응형
반응형

사건발단. 

 

나는 MAC을쓴다.. 디스크 기타 용량이 너무 많아서 

클린 앱 다운받아서 정리를 해줬다. 

근데 갑자기 안드로이드 스튜디오에서 위 같은 에러를 뿜어낸다 .

구글 검색을 해보고 /MyApp/.gradle 을 지우고 다시 해보라는 말을 많이봤는데도 안된다. 

결국 해결한게.. 

 

Invalidate Caches / Restart임.. 잘됨. 

 

캐시가 삭제되었는데 스튜디오는 그걸 모르니 계속 예전 경로로 본거 같기도하고.... 

반응형
반응형

음.. 일단 Crashlytics 필요한 이유는 안드로이드를 개발을 완료했어도 

다른 기기나 버전에서 오류가 날 수 있기 때문이다. 

 

그래서 Crashlytics 등록을 해놓으면 오류가나면 어떤 오류인지 볼 수 있고 이에 대응이 가능함. 

 

1. firebase 들어가서 Project를 생성하자 . 

firebase.google.com/docs/crashlytics/get-started?hl=en&platform=android

위에 들어가면 잘나와있음.

 

2. 설정을 완료하면 앱 실행시 Crashlytics 관련 오류가 날거다

3. 아래 firebase  콘솔 > 출시 및 모니터링 > Crashlytics > 사용 설정 버튼을 클릭하게 되면 

4.아래처럼 프로그레스바가 돌면서 오류를 강제로 던지라고 한다. 

5. 강제로 버튼 리스너 걸어서 throw 던져주면 캐치되면서 리포트 화면으로 넘어간다. 

6.

설정 완료되었고 디테일하게 하고싶으면 레퍼런스 잘 읽고 하면됨. 

 

반응형

+ Recent posts