创建 generic/base 形式 class 无论是 activity 还是片段
Create generic/base form class regardless if activity or fragment
我正在尝试创建一个 generic/base 表单,无论它是 activity
还是 fragment
。为了简单起见,一个Form
可以这样提交:
class BaseFormActivity extends AppCompatActivity {
public abstract void submitForm();
@Override
public void setContentView(int layoutResID) {
ConstraintLayout activityBaseForm = (ConstraintLayout) getLayoutInflater().inflate(R.layout.activity_base_form, null);
FrameLayout frameBaseForm = activityBaseForm.findViewById(R.id.frame_base_form);
getLayoutInflater().inflate(layoutResID, frameBaseForm, true);
findViewById(R.id.btn_submit).setOnClickListener(v -> submitForm()) // for the sake of simplicity, there's a button that will trigger submitForm() method
super.setContentView(activityBaseForm);
}
}
在这里,我只包括一些默认的表单布局,以及一个触发抽象方法的提交按钮 submitForm()
。但是,这仅适用于 android activities
。如何在不编写 BaseFormFragment
的情况下使它也可用于 fragments
?我不想重复从 activity
到 fragment
的默认行为,反之亦然。
将其视为示例 Presenter class,它处理您的按钮点击并获取所有表单字段并发送到服务器
public class MyPresenter {
private MyPresenterIView iViewInstance;
public MyPresenter(MyPresenterIView iView){
this.iViewInstance=iView;
}
public void onSubmitClick(){
//write your logic here
String fieldOneText=iViewInstance.getFieldOneText();
sendToServer(fieldOneText);
}
private void sendToServer(String stringInfo){
//send info to server
}
}
MyPresenterIView 界面
public interface MyPresenterIView{
String getFieldOneText();
}
并在您的 Activity 或 Fragment
中使用 Presenter
//implement MyPresenterIView to your Activity or Fragment
public class MyActivity extent SomeActivity implements MyPresenterIView{
private MyPresenter myPresenter;
//in onCreate or onCreateView(if its a fragment) initialize myPresenter
protected void onCreate(..){
myPresenter=new MyPresenter(this);//this will enforce Activity/Fragment to implement IView
}
@Override //comes from MyPresenterIView
public String getFieldOneText(){
return ((EditText)findViewById(R.id.edttext_field_one)).getText().toString().trim();
}
}
我正在尝试创建一个 generic/base 表单,无论它是 activity
还是 fragment
。为了简单起见,一个Form
可以这样提交:
class BaseFormActivity extends AppCompatActivity {
public abstract void submitForm();
@Override
public void setContentView(int layoutResID) {
ConstraintLayout activityBaseForm = (ConstraintLayout) getLayoutInflater().inflate(R.layout.activity_base_form, null);
FrameLayout frameBaseForm = activityBaseForm.findViewById(R.id.frame_base_form);
getLayoutInflater().inflate(layoutResID, frameBaseForm, true);
findViewById(R.id.btn_submit).setOnClickListener(v -> submitForm()) // for the sake of simplicity, there's a button that will trigger submitForm() method
super.setContentView(activityBaseForm);
}
}
在这里,我只包括一些默认的表单布局,以及一个触发抽象方法的提交按钮 submitForm()
。但是,这仅适用于 android activities
。如何在不编写 BaseFormFragment
的情况下使它也可用于 fragments
?我不想重复从 activity
到 fragment
的默认行为,反之亦然。
将其视为示例 Presenter class,它处理您的按钮点击并获取所有表单字段并发送到服务器
public class MyPresenter {
private MyPresenterIView iViewInstance;
public MyPresenter(MyPresenterIView iView){
this.iViewInstance=iView;
}
public void onSubmitClick(){
//write your logic here
String fieldOneText=iViewInstance.getFieldOneText();
sendToServer(fieldOneText);
}
private void sendToServer(String stringInfo){
//send info to server
}
}
MyPresenterIView 界面
public interface MyPresenterIView{
String getFieldOneText();
}
并在您的 Activity 或 Fragment
中使用 Presenter//implement MyPresenterIView to your Activity or Fragment
public class MyActivity extent SomeActivity implements MyPresenterIView{
private MyPresenter myPresenter;
//in onCreate or onCreateView(if its a fragment) initialize myPresenter
protected void onCreate(..){
myPresenter=new MyPresenter(this);//this will enforce Activity/Fragment to implement IView
}
@Override //comes from MyPresenterIView
public String getFieldOneText(){
return ((EditText)findViewById(R.id.edttext_field_one)).getText().toString().trim();
}
}