추상 클래스 BaseActivity의 캡슐화
2) 우리는 더 이상 모든Activity에서 이 세 가지 방법을 수동으로 호출할 필요가 없다. 왜냐하면 우리의BaseActivity는 이미 우리를 위해 봉인을 해 놓았기 때문이다. 이 세 가지 추상적인 방법을 다시 쓰면 된다.
다음 코드: Dagger2+BufferKnife
MainActivity의 코드:
package com.example.administrator.myapplication.Base;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
import com.example.administrator.myapplication.dagger.component.ActivityComponent;
import com.example.administrator.myapplication.dagger.component.DaggerActivityComponent;
import com.example.administrator.myapplication.dagger.module.ActivityModule;
import butterknife.ButterKnife;
/**
* Created on 2017/5/10.
* Author:crs
* Description:BaseActivity
*/
public abstract class BaseActivity extends AppCompatActivity {
private static final String TAG = "BaseActivity";
public Context mContext;
ActivityComponent mActivityComponent;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivityComponent = DaggerActivityComponent.builder().activityModule(new ActivityModule(this)).build();
mContext = this;
setContentView();
//ButterKnife,this Activity
ButterKnife.bind(this);
//Log.i(TAG,this+""); MainActivity@53538dd8
//Dagger2
initInject();
init();
}
//
public abstract void initInject();
//
public abstract void setContentView();
//
public abstract void init();
//
public void showToast(String msg) {
Toast.makeText(BaseActivity.this, msg, Toast.LENGTH_SHORT).show();
}
// Activity ActivityComponent
public ActivityComponent getActivityComponent() {
return mActivityComponent;
}
}
ActivityComponent의 코드:
package com.example.administrator.myapplication;
import android.widget.TextView;
import com.example.administrator.myapplication.Base.BaseActivity;
import butterknife.BindView;
import butterknife.OnClick;
public class MainActivity extends BaseActivity {
// , 。
//@Override
//protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// ButterKnife.bind(this);
//}
@BindView(R.id.tv_content)
TextView tv_content;
@Override
public void initInject() {
// Activity,mActivityComponent() ;
//ActivityComponent :
//ActivityModule: presenter , , 。
getActivityComponent().inject(this);
}
@Override
public void setContentView() {
setContentView(R.layout.activity_main);
}
@Override
public void init() {
}
@OnClick(R.id.btn)
public void loadData(){
}
}
ActivityModule의 코드:package com.example.administrator.myapplication.dagger.component;
;
import com.example.administrator.myapplication.MainActivity;
import com.example.administrator.myapplication.dagger.module.ActivityModule;
import dagger.Component;
/**
* Created on 2017/5/10.
* Author:crs
* Description:ActivityComponent
*/
@Component(modules = {ActivityModule.class})
public interface ActivityComponent {
// MainActivity
void inject(MainActivity activity);
}
//로그 차단기 추가: 효과 보기
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClientBuilder.addInterceptor(interceptor);
jar 패키지를 가져오는 대신 의존하는 방식을 추가합니다. 그렇지 않으면 방법 수가 65535를 초과하여 apk가 너무 커질 수 있습니다.
프로젝트 종속 관리:
compile 'com.alibaba:fastjson:1.2.37'
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
compile 'com.squareup.okio:okio:1.13.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
클래스 헤더 설명:
/**
* Created on ${DATE}.
* Author:crs
* Description:
*/
이미 Bufferknife를 사용했기 때문에 사용하지 않아도 됩니다.
set On Clistener Listener(this) Login Act에는 불필요한 코드가 많습니다(버전 유지보수 시 삭제)
부모 클래스에 불러오기 대화상자와 숨기기 대화상자를 봉인합니다.
프로젝트의 초기화 방법: 부류 BaseActivity의 추상적인 방법
getLayoutId()
initParams()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.