可以帮我写一个android的baseActivity抽象类吗
时间: 2023-05-11 11:02:13 浏览: 66
当然可以,以下是一个简单的Android BaseActivity抽象类的示例代码:
```
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
initView();
initData();
}
protected abstract int getLayoutResourceId();
protected abstract void initView();
protected abstract void initData();
}
```
你可以在这个抽象类的基础上编写自己的Activity,并实现getLayoutResourceId()、initView()和initData()方法。这个抽象类可以帮助你避免重复编写Activity的基础代码,提高开发效率。
相关问题
可以帮我写一个功能齐全的android的baseActivity抽象类
当然可以,以下是一个基本的 Android BaseActivity 抽象类的代码示例:
```
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());
initViews();
initData();
}
protected abstract int getLayoutResourceId();
protected abstract void initViews();
protected abstract void initData();
protected void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
protected void startActivity(Class<? extends Activity> activityClass) {
Intent intent = new Intent(this, activityClass);
startActivity(intent);
}
protected void startActivity(Class<? extends Activity> activityClass, Bundle extras) {
Intent intent = new Intent(this, activityClass);
intent.putExtras(extras);
startActivity(intent);
}
protected void startActivityForResult(Class<? extends Activity> activityClass, int requestCode) {
Intent intent = new Intent(this, activityClass);
startActivityForResult(intent, requestCode);
}
protected void startActivityForResult(Class<? extends Activity> activityClass, int requestCode, Bundle extras) {
Intent intent = new Intent(this, activityClass);
intent.putExtras(extras);
startActivityForResult(intent, requestCode);
}
}
```
这个 BaseActivity 抽象类包含了一些常用的方法,例如 showToast、startActivity、startActivityForResult 等等,可以方便地在子类中使用。同时,子类需要实现 getLayoutResourceId、initViews、initData 等抽象方法,以便在 onCreate 方法中进行布局的加载和数据的初始化。
可以帮我写一个功能齐全的android的带焦点处理的baseActivity抽象类
当然可以,以下是一个功能齐全的带焦点处理的baseActivity抽象类的示例代码:
```java
public abstract class BaseActivity extends AppCompatActivity {
private boolean isPaused = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
initView();
}
@Override
protected void onResume() {
super.onResume();
isPaused = false;
}
@Override
protected void onPause() {
super.onPause();
isPaused = true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (!isPaused) {
View v = getCurrentFocus();
if (v instanceof EditText) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth();
if (ev.getX() > left && ev.getX() < right && ev.getY() > top && ev.getY() < bottom) {
// 点击的是EditText区域,保留焦点
return super.dispatchTouchEvent(ev);
} else {
// 点击的是其他区域,隐藏键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
v.clearFocus();
return true;
}
}
}
return super.dispatchTouchEvent(ev);
}
protected abstract int getLayoutId();
protected abstract void initView();
}
```
这个抽象类继承自 AppCompatActivity,实现了带焦点处理的功能。在 onResume 和 onPause 方法中,我们记录当前 Activity 是否处于暂停状态。在 dispatchTouchEvent 方法中,我们判断当前点击的区域是否是 EditText 区域,如果是,则保留焦点;如果不是,则隐藏键盘并清除焦点。这样就可以实现带焦点处理的功能了。