3 回答
TA贡献1828条经验 获得超6个赞
我对DRY原理没有任何了解,但是在阅读此答案时,我得到了DRY原理背后的想法,而在考虑您的问题解决方案时,我得到了创建util类的想法,该类具有在所需活动之间进行导航的方法:
public class NavigationUtils{
public static void navigate(Context source, Class<?> destination){
Intent intent = new Intent(source, destination);
source.startActivity(intent);
}
}
希望这个答案对您有帮助。
TA贡献1829条经验 获得超6个赞
首先-不要崇拜DRY。它是一个经验法则,并非最终都是好的编程。
其次,通常我要做的是
class SignInIntent extends Activity {
public static Intent createIntent(Context context, parameters) {
Intent intent = new Intent(context, SignInIntent.class);
//Pass parameters here
return intent;
}
}
class SomeOtherActivity extends Activity {
public void someFunc() {
startActivity(SignInIntent.createIntent(this, params);
}
}
通常,我希望它返回一个意图,而不是只是出于某些原因而等待他们开始活动。这样,您还可以在SignInActivity中保留所有需要的参数及其名称的所有知识。
TA贡献1810条经验 获得超4个赞
好的考虑因素之一是使其具有BaseActivity通用功能。
public class BaseActivity extends AppCompatActivity {
public void startActivity(Class<?> mClass, Bundle extras){
Intent intent = new Intent(this, mClass);
intent.putExtras(extras);
startActivity(intent);
}
public void startActivity(Class<?> mClass){
Intent intent = new Intent(this, mClass);
startActivity(intent);
}
}
public class SignUpActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
mSignInButton = findViewById(R.id.sign_in_button);
mSignInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(SignInActivity.class);
}
});
}
}
添加回答
举报