可以把OnClickListener写成parcelable吗?
can write OnClickListener into parceable?
您好,我遇到了 OnClickListener 的问题
View.OnClickListener listener= new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Toast.makeText(Conversations.this, "click on MSG",
Toast.LENGTH_SHORT).show();
}
};
============================================= ===========================
我需要将此侦听器放入可解析的片段中。
我不是 parceableing 侦听器,而是在 readvalue 为 null 之后以及单击 app crasher 时,因为它是对 null 对象的引用。
现在我需要找到一些可用于保存和读取对象 (View.OnClickListener) 的方法(如果可解析或类似的东西)。
没有这个我需要重建我的项目:(
请帮助我。
谢谢
_______________________________________________________--
我在片段中没有片段我希望所有片段都放入 "extra" 和其他 activity 从 extra..
中读取
Intent i= new Intent(Conversations.this,MessagesSingleFragmentActivity.class); i.putExtra("Fragment1", (Parcelable) recycleMessage); startActivity(i);
在其他 activity 中有
Intent extras = getIntent(); Fragment fragment = (Fragment) extras.getParcelableExtra("Fragment1"); fm.beginTransaction().replace(R.id.fragment_container, fragment).commit();
不,您不能将 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 的 onClick,那么 EventBus 是该用途的最佳选择 Otto or EventBus来自 GreenBot
建议通过 Activity.. 或者更一般地通过 Activity 符合的接口在片段之间进行交互。
还有一件事:如果您在两个片段中都有共同的功能,也许最好将它提取到 Activity?
您好,我遇到了 OnClickListener 的问题
View.OnClickListener listener= new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Toast.makeText(Conversations.this, "click on MSG",
Toast.LENGTH_SHORT).show();
}
};
============================================= ===========================
我需要将此侦听器放入可解析的片段中。 我不是 parceableing 侦听器,而是在 readvalue 为 null 之后以及单击 app crasher 时,因为它是对 null 对象的引用。
现在我需要找到一些可用于保存和读取对象 (View.OnClickListener) 的方法(如果可解析或类似的东西)。 没有这个我需要重建我的项目:(
请帮助我。
谢谢
_______________________________________________________--
我在片段中没有片段我希望所有片段都放入 "extra" 和其他 activity 从 extra..
中读取Intent i= new Intent(Conversations.this,MessagesSingleFragmentActivity.class); i.putExtra("Fragment1", (Parcelable) recycleMessage); startActivity(i);
在其他 activity 中有
Intent extras = getIntent(); Fragment fragment = (Fragment) extras.getParcelableExtra("Fragment1"); fm.beginTransaction().replace(R.id.fragment_container, fragment).commit();
不,您不能将 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 的 onClick,那么 EventBus 是该用途的最佳选择 Otto or EventBus来自 GreenBot
建议通过 Activity.. 或者更一般地通过 Activity 符合的接口在片段之间进行交互。
还有一件事:如果您在两个片段中都有共同的功能,也许最好将它提取到 Activity?