Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧_Java_Android_Android Studio_Android Fragments - Fatal编程技术网

Java 在android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧

Java 在android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,在android Studio中,我想当我点击按钮时,下一个活动/片段应该来自右侧,而当前活动应该是左侧。我实现了它在活动上的工作,但在适配器上的工作显示错误 holder.questions.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(DoctorsProfi

在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在活动上工作,但在Recyclerview和Listview的适配器上不工作,请告诉任何其他选项。我希望当我单击recyclerview项时,下一个活动应该导航或使用overridePendingTransition从右侧开始。

此技巧介绍如何在活动之间切换时更改Android的默认动画。
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);
在两个活动之间更改动画的代码非常简单:在启动新的意图后,只需从当前活动调用overridePendingTransition()。此方法可从Android版本2.0(API级别5)获得,它需要两个参数,用于定义当前活动的进入和退出动画。 下面是一个例子: //调用新活动

startActivity(新意图(this,NewActivity.class))

//设置Android 2.0及更高版本中可用的transition->方法

覆盖转换(R.anim.slide\u in\u right\u up,R.anim.slide\u out\u right\u up)

这两个参数是使用XML文件定义的动画的资源ID(每个动画一个)。这些文件必须放在应用程序的res/anim文件夹中。这些文件的示例可以在Android API演示中找到,位于anim文件夹中


例如,代码访问

像这样更改代码,您必须在适配器中将活动作为上下文传递

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);
        }
    });
注意:上下文是活动的基本对象

更新: 我已经检查了已接受的答案,但希望您理解,每当您的活动启动时,它都会被调用,这不是最佳实践。如果你想遵循公认的答案,我建议采取更好的方法

备选方案:
将bundle中的一个参数传递给新活动,以确保来自该特定适配器的转换,这样当您也从任何其他活动进行转换时,就不会发生双重转换。

有一种简单的方法可以做到这一点。只需将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);
  }

您需要将第二个动画属性设置为“R.anim.滑出\左\上”,而不是“R.anim.滑出\右\上”.检查我的答案…可能会帮助您复制,但您必须创建动画文件,您可以从任何网站轻松找到该文件..例如代码访问:希望它对您有所帮助。如果发生重写,将为所有转换调用OnCreate,其中新的意图将是此活动。