2017-06-13 7 views
0

パブリックstatic voidからnotへの呼び出し方法static static void from Fragment class? または(listViewHolder.dot.setOnClickListener(新View.OnClickListener()およびます。public void search3())パブリックから静的なvoidを呼び出す方法static static voidをフラグメントクラスに呼び出す方法

enter image description here // TAB2 //パブリッククラスTAB2が延びフラグメント

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"); 

     } 
    }); 
間を呼び出すための別の方法があります
+1

可能な複製にありがとうございました[私はとの違いを知りたいです静的メソッドと非静的メソッド](https://stackoverflow.com/questions/3903537/i-want-to-know-the-difference-between-static-method-and-non-static-method) – Ivar

+0

何が問題なのですかあなたの写真と一緒に? _technically_有効ですが、作成された前のインスタンスを使用したいですか? – Rogue

+0

助けてくれてありがとう、しかし、それは無効です、someClassに来るとき.search3();エラーを出してアクティビティを閉じます –

答えて

0

あなたOnClickListenerからFragmentまたはActivityメソッドを呼び出したい場合は、あなたがそのFragmentまたはActivityどこかへの参照を格納する必要があり、おそらくこのような何かがあなたのために動作します:。

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(); 
      } 
     }); 

     ... 
    } 
} 
+0

ありがとうございました。可能性がありますこのソリューションはこの場合に便利で、私はAndroidプログラミングの初心者です –

0

入れパブリッククラスCustomAdapterが クラスCustomAdapterがBaseAdapterを拡張し、この方法のようにTAB2のフラグメント・クラス内BaseAdapterを拡張し、

静的を削除するすべての

+0

Tariqのソリューションがあります。あなたのソリューションは本質的に私のものと同じですが、柔軟性は低いです。 'CustomAdapter'クラスを' Tab2'クラスの中に置くと、静的でない 'inner class'や' nested class'になります。コンパイラは 'CustomAdapter'のコンストラクタに暗黙的に' tab2'引数を追加し、それを引数として対応する呼び出し。詳細は、[ネストされたクラス](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)を参照してください。 – SergGr

関連する問題