有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可以将OnClickListener写入可打包文件吗?

你好,我和你有点麻烦

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

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

我需要把这个侦听器放进一个片段中,这个片段将是可打包的。 我不是打包侦听器,而是在readvalue为null之后,当单击应用程序崩溃器时,因为它是对null对象的引用

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

请帮帮我

谢谢

_______________________________________________________--

我在片段中没有片段,我希望所有片段都放在“extra”中,在其他活动中从extra读取

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

  1. # 1 楼答案

    建议通过活动在片段之间进行交互。。或者更一般地说,通过活动所遵循的接口

    还有一件事:如果两个片段中都有相同的功能,那么将其提取到活动中可能更好

  2. # 2 楼答案

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

    弗拉加。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的最佳选项