我将recyclerview连接到我的SecondActivity,在Adapter的onclick方法中,我在第二个Activity中调用了一个方法。但是这种方法需要是静态的。我想在幻灯片之间制作动画,所以当我点击recyclerview屏幕的其中一个选项时,应该将slide_out_right动画放到第三个活动上。 以下是适配器
中的代码 holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String selectedOption = item.getSelectedOption;//item is object of Item class(class used to populate recyclerview)
SecondActivity.startThirdActivity(selectedOption);
}
});
以下是SecondActivity中的方法
public static void startThirdActivity(String recyclerSelectedOption) {
Intent intent = new Intent(this, ThirdActivity.class);
Bundle extras = new Bundle();
extras.putString(MESSAGE_FROM_SECOND, recyclerSelectedOption);
intent.putExtras(extras);
startActivity(intent);
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
}
现在很多人都知道startActivity是一个非静态方法,我不能用静态方法调用它。但我也无法从静态回收站视图中调用非静态方法。 所以我想在我的secondActivity中创建一个变量并将其设置为null。并且我希望在使用来自recyclerList的选定选项设置此变量时调用方法,该选项将是非静态的,并且可以使用startActivity()方法跳转到ThirdActivity。
我知道这是一个很大的问题。如果您知道另一种方法,我可以避免做所有这些,只是直接从Adapter动画到ThirdActivity然后让我知道。 谢谢, HyperCoder
答案 0 :(得分:0)
使用界面。
public interface OnItemClickListener {
void onItemClick(String item);
}
现在适配器构造函数将是
private final OnItemClickListener listener;
public CustomAdapterAdapter(OnItemClickListener listener) {
this.listener = listener;
}
现在onclick侦听器传递选择的选项
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
String selectedOption = item.getSelectedOption;
listener.onItemClick(selectedOption );
}
});
您必须在OnItemClickListener
SecondActivity
public class SecondActivity extends AppCompatActivity implements OnItemClickListener{
@Override
public void onItemClick(String item){
startThirdActivity(item)
}
}
答案 1 :(得分:0)
您可以将context
从view
传递到SecondActivity
,如下所示:
SecondActivity.startThirdActivity(selectedOption, view.getContext())
然后使用上下文开始这样的活动:
context.startActivity(intent);
我相信您可以在overridePendingTransition
onCreate
中致电ThirdActivit