[英]how to intent with on click button from activity to fragment in android studio
[英]In android Studio, I want when i click on button , next activity/fragment should come from right side
在Android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧,而当前活动应该左移。
holder.questions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DoctorsProfile.this,Questions.class);
i.putExtra("DOCTOR_ID",doctor_id);
startActivity(i);
overridePendingTransition( R.anim.slide_in_right_up, R.anim.slide_out_right_up);
}
});
OverridePendingTransition在Activity上有效,但在Recyclerview和Listview Adapters上无效,请告知其他选项。 我想当我单击recyclerview项时,下一个Activity应该通过使用overridePendingTransition导航或来自右侧。
Fragment fragment = Fragment.newInstance();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fragment_slide_left_enter,
R.anim.fragment_slide_left_exit, R.anim.fragment_slide_right_enter,
R.anim.fragment_slide_right_exit);
Utils.addFragmentToActivity(fragmentTransaction, Fragment, R.id
.content_frame);
本技巧介绍了在“活动”之间切换时如何更改Android的默认动画。 在两个Activity之间更改动画的代码非常简单:在启动新的Intent之后,只需从当前Activity调用overridePendingTransition()。 此方法可从Android 2.0版(API级别5)获得,它具有两个参数,这些参数用于定义当前Activity的输入和退出动画。 这是一个示例://调用一个新的Activity
startActivity(new Intent(this,NewActivity.class));
//设置transition->从Android 2.0及更高版本可用的方法
overridePendingTransition(R.anim.slide_in_right_up,R.anim.slide_out_right_up);
这两个参数是使用XML文件定义的动画的资源ID(每个动画一个)。 这些文件必须放置在应用程序的res / anim文件夹中。 这些文件的示例可以在anim文件夹内的Android API演示中找到。
例如代码,请访问http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/#more-483
像这样的代码更改,您必须在适配器中将活动作为上下文传递
holder.questions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(DoctorsProfile.this,Questions.class);
i.putExtra("DOCTOR_ID",doctor_id);
Activity activity = (Activity) context;
activity.startActivity(i);
activity.overridePendingTransition(R.anim.slide_in_right_up, R.anim.slide_out_right_up);
}
});
注意:上下文是活动的基础对象
更新:我已经检查了接受的答案,但是希望您理解,每当您的活动启动时,它就会被调用,那不是最佳实践。 如果您要遵循已接受的答案,我建议采用更好的方法。
替代方法:将捆绑软件中的一个参数传递给新活动,以确保来自该特定适配器的过渡,这样当您也来自任何其他活动时,就不会发生双重转换。
有一个简单的方法可以做到这一点。 只需将overridePendingTransition放在下一个Activity / Fragment的OnCreate方法上即可,以便下次出现Activity时,它会根据您的选择而来。不需要在适配器上添加overridePendingTransition。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ask_question);
overridePendingTransition( R.anim.slide_in_right_up, R.anim.slide_out_right_up);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.