【问题标题】:How can call from public static void to not static public void in Fragment class如何在片段类中从公共静态无效调用非静态公共无效
【发布时间】:2017-11-15 08:15:48
【问题描述】:

如何在 Fragment 类中从 public static void 调用非静态 public void? 或者是否有另一种方法可以在 (listViewHolder.dot.setOnClickListener(new View.OnClickListener() 和 public void search3() ) 之间调用

// 选项卡2 // 公共类 Tab2 扩展 Fragment

public void search3() {

Toast.makeText( getActivity(),"search3333333: " ,Toast.LENGTH_SHORT ).show();

}

public static void search4 (Context context1,String text) {

Toast.makeText( context1,text,Toast.LENGTH_LONG ).show();

Tab2 someClass = new Tab2();

someClass.search3();

}
//CustomAdapter 
//public class CustomAdapter extends BaseAdapter

    listViewHolder.dot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

Toast.makeText( context,"" +  ff.getText().toString() ,Toast.LENGTH_LONG).show();

Tab2.search4(context,"hi hhhh");

        }
    });

【问题讨论】:

  • 你的图片有什么问题?它在技术上是有效的,但是你想使用以前创建的实例吗?
  • 感谢帮助但是无效,当来到someClass.search3();给出错误并关闭 Activity
  • Tab2 是一个片段吧?除非您将片段提交给活动,否则您不能在 search3() 方法中使用 getActivity()
  • 非常感谢。可能这个解决方案在这种情况下很有用,我是Android编程的初学者我已经得到了解决方案

标签: java android


【解决方案1】:

如果您想从您的OnClickListener 调用FragmentActivity 方法,您必须在某处存储对该FragmentActivity 的引用。可能这样的东西对你有用:

public class CustomAdapter extends BaseAdapter {
    private final Tab2 tab2;
    // other fields

    public CustomAdapter(Tab2 tab2, /* other constructor params ... */ ) {
        this.tab2 = tab2;
        // process other params and other initialization
    }

    ...
    @Override
    public View getView (int position, View convertView, ViewGroup parent) {

        ...

        listViewHolder.dot.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                tab2.search3();
            }
        });

        ...
    }
}

【讨论】:

  • 非常感谢。可能这个解决方案在这种情况下很有用,我是Android编程的初学者我已经得到了解决方案
【解决方案2】:

像这样将公共类CustomAdapter扩展在tab2 Fragment类中的BaseAdapter 类 CustomAdapter 扩展 BaseAdapter 并删除静态

非常感谢大家

【讨论】:

  • Tariq,您的解决方案与我的解决方案基本相同,但灵活性较低。当您将CustomAdapter 类放入Tab2 类中时,即使其成为非静态inner classnested class,编译器会隐式将tab2 参数添加到CustomAdapter 的构造函数中,并将其作为参数添加到相应的调用中.有关详细信息,请参阅Nested Classes
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多