如何正确使用notify()来开始新活动?

时间:2018-02-12 06:08:10

标签: java android android-recyclerview

我将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

2 个答案:

答案 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)

您可以将contextview传递到SecondActivity,如下所示:

SecondActivity.startThirdActivity(selectedOption, view.getContext())

然后使用上下文开始这样的活动:

context.startActivity(intent);

我相信您可以在overridePendingTransition

onCreate中致电ThirdActivit