可以将OnClickListener写入parceable吗?

时间:2017-09-25 12:18:49

标签: java android save onclicklistener parcelable

您好OnClickListener

有问题
View.OnClickListener listener= new View.OnClickListener() 
{ 
@Override 
public void onClick(View view) 
   { 
     Toast.makeText(Conversations.this, "click on  MSG", 
           Toast.LENGTH_SHORT).show(); 
  } 
};

=============================================== =========================

我需要将这个监听器放入Fragment中,这将是可以实现的。 我没有分配监听器,但是在readvalue为null之后,当点击app crasher时,因为它是对null对象的引用。

现在我需要找到一些可用于保存和读取对象的方法(View.OnClickListener),如果是parceable或类似的东西。 没有这个,我需要重建我的项目:(

请帮帮我。

由于

_______________________________________________________--

我在片段中没有片段我希望所有片段都放入“额外”并在其他活动中读取额外的...

Intent i= new Intent(Conversations.this,MessagesSingleFragmentActivity.cla‌​ss); i.putExtra("Fragment1", (Parcelable) recycleMessage); startActivity(i);

和其他活动

Intent extras = getIntent(); Fragment fragment = (Fragment) extras.getParcelableExtra("Fragment1"); fm.beginTransaction().replace(R.id.fragment_container, fragment).commit();

2 个答案:

答案 0 :(得分:0)

不,你不能将OnClickListener作为Parcelable 传递,但是,如果你想观察从一个片段到另一个片段的点击,那么你必须在第二个片段中实现onclick。

FragA.java: //有onClickListener

的人
Runnable run;

public void setClick(Runnable run){
   this.run = run;
}

view.setOnClickListener(new OnClickListener(){
    public void onClick(View v){
        // do something in onclick
        if(run!=null){run.run();}
    }
});

<强> FragB.java:

((FragA)getParentFragment()).setClick(
       new Runnable() {
            @Override
            public void run() {
                // do something in other fragment
            }
        }
)

<强>更新

如果您想在 ActivityB 上点击 ActivityA ,那么EventBus是GreenBot使用OttoEventBus的最佳选择

答案 1 :(得分:0)

建议通过Activity ..或更一般地通过Activity符合的接口在片段之间进行交互。

还有一件事:如果你在两个片段中都有共同的功能,也许最好将它提取到Activity?