java - 安卓 :- Separate class for handling views clicks etc;

标签 java android android-layout oop

我是开发领域的新手。我正在开发 android 应用程序,在我的 Activity_main 布局中我有许多不同的项目。单击其中一个按钮后,顶部布局将替换为新布局。

现在,我不想在主类中定义新的布局按钮、textview 等,而是想要一个单独的类来初始化我的按钮等,并且在该类中我还可以声明 onClickListners。

在我的主要 Activity 中,我想要:-

public void onCreate(){

button bb = (Button)findViewById(R.id.mybutton);
View CurrentContentView= getLayoutInflater().inflate(R.layout.activity_main, null, false);
bb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 new MyNewViewInit(CurrentContentView);
            }
        });


}

在我的 MyNewViewInit() 类中:-

 public class MyNewViewInit{

    ImageButton backbutton;
    ChipsMultiAutoCompleteTextview search;
    ImageButton searchclear;
    ImageButton modeTime;
    ImageButton  modeTag;
    TextView modeTimeTxt;
    TextView modeTagTxt;
    ScrollView mainScroll;
    ScrollView selectedScroll;

    public MyNewViewInit(View v){
        backbutton = (ImageButton)v.findViewById(R.id.backbutton);
        search = (ChipsMultiAutoCompleteTextview)v.findViewById(R.id.search);
        searchclear = (ImageButton)v.findViewById(R.id.searchclear);
        modeTime = (ImageButton)v.findViewById(R.id.modeTime);
        modeTag = (ImageButton)v.findViewById(R.id.modeTag);
        modeTimeTxt = (TextView)v.findViewById(R.id.modeTimeTxt);
        modeTagTxt = (TextView)v.findViewById(R.id.modeTagTxt);
        mainScroll = (ScrollView)v.findViewById(R.id.HAT1);
        selectedScroll = (ScrollView)v.findViewById(R.id.HAT2);
        tag = new OtherHelper().arrayread();
        mainHashTag.setVisibility(View.GONE);
        selectedHashTag.setVisibility(View.GONE);
        clickListners();


    }

public void clickListners(){

        backbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        searchclear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        modeTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


            }
        });

        modeTimeTxt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        modeTag.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        modeTagTxt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


            }
        });


    }

}

因此,当我尝试使用此代码时,onclicklistners 不起作用。

最好的方法是什么?

谢谢

最佳答案

在你的类中编写一个接口(interface),

    class MyNewViewInit{

    public interface ClickListenerInterface{
        void onCLickSomething(Something something);
    }

    ClickListenerInterface mClickListener;
    ...
     public MyNewViewInit(View v,ClickListenerInterface clickListener){
         mClickListener = clickListener;
         ...
    }

    public void clickListners(){
        ...
        backbutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(mClickListener!=null){
                    mClickListener.onCLickSomething(v);
                    }else{
                    //throw an error that activity should implement ClickListenerInterface
                    }
                }
            });
    }
    }

在您的 Activity 中,

class MyActivity extends Activity implements ClickListenerInterface{
    public void onCreate(){
        bb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 new MyNewViewInit(CurrentContentView,this);
                 //if using Android Studio, then use the context menu to implement the                     interface
            }
        });
    }

    void onCLickSomething(Something something){
        //do something with something
    }
}

关于java - 安卓 :- Separate class for handling views clicks etc;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283635/

相关文章:

java - Java 中集合的浅拷贝

android - 始终将 float 操作按钮放在顶部

java - 导出处清洁问题

java - 枚举中来自供应商的无界通配符通用数组

java - 将值从辅助线程传递到主线程

java - 哪个是按顺序发送大型 UDP 数据包的最佳方法

Android Studio 无法与 gradle 文件同步

android - 如何动态添加onclick到arraylist

android - 创建来自屏幕顶部的 Toast

Java从文件读取到数组运行时错误