2016-12-23 5 views
1

私はアンドロイドの初心者で、私は単純な仕事と思われます。オープンダイアログのフラグメントonClick of ExpanandableListViewの子要素のクリック

私はExpandableListViewDialogFragmentクラスを持っています。私はエラーを取得する上記のコードでExpandableListView

public class TestList extends BaseExpandableListAdapter { 

    private List<String> headers; 
    private HashMap<String, HashMap<String, List<String> > > list_children; 
    private Context context; 

    private static final String DIALOG_SINGLE_CHOICE_LIST = "MainActivity.RepeatSettings"; 

....... 

    @Override 
     public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
      HashMap<String, List<String>> listHashMap = (HashMap<String, List<String>>) this.getChild(groupPosition,childPosition); 
      if(convertView == null) { 
       LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = layoutInflater.inflate(R.layout.list_child, null); 
      } 

      TextView repeat_btn = (TextView) convertView.findViewById(R.id.repeat_btn); 
      repeat_btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        RepeatSettings repeatSettings = new RepeatSettings(); 
        repeatSettings.show(getSupportFragmentManager(), DIALOG_SINGLE_CHOICE_LIST); 
       } 
      }); 
      return convertView; 
     } 

..... 

} 

getChildView方法は、私はリストの下

childView内のTextView要素をクリックしたときにdialogFragmentクラスを開始したいです

方法を解決できないgetSupportFragmentManager()

私は自分のTestListクラスはFragmentActivityクラスを拡張しませんが、私はそれがすでにBaseExpandableListAdapter

を拡張するので、私はまたgetActivity().getSupportFragmentManager()を使用しようとしましたが、ここにも、私はActivityクラスがどのgetActivity()メソッドを持つことができないという警告を取得することはできませんFragmentのように明白です。

は、下のダイアログクラスIは、上記の問題を解決するにはどうすればよい

public class RepeatSettings extends DialogFragment { 

    String repeat_interval[] ; 
    String selected_interval; 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // creating an alertDialog object 
     final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

     //defining the repeat_interval string 
     repeat_interval = getResources().getStringArray(R.array.repeat_interval); 

     //setting the alert dialog title and the type of items contained in it. 
     //First parameter is the list, second is the already checked item, third is the listner object 
     builder.setTitle("Choose Repeat Interval").setSingleChoiceItems(repeat_interval, -1, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (which) { 
        case 0: 
         selected_interval = (String) repeat_interval[which]; 
         break; 
        case 1: 
         selected_interval = (String) repeat_interval[which]; 
         break; 
        case 2: 
         selected_interval = (String) repeat_interval[which]; 
       } 
      } 
     }).setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 

      } 
     }); 
     return builder.create(); 
    } 
} 

ためのコードです。あなたのMainActivityのアクティビティのコンテキストが渡されているので:任意の助け

答えて

1

ため

おかげで

public static RepeatSettings newInstance() { 
RepeatSettings frag = new RepeatSettings(); 
return frag; 
} 

は、その後、あなたのリストにはアダプタがこのようなダイアログフラグメントを呼び出すダイアログフラグメントのクラスに静的新しいインスタンスメソッドを作りますアダプター。

RepeatSettings obj = RepeatSettings.newInstance(); 

obj.show(((MainActivity)context).getSupportFragmentManager(), DIALOG_SINGLE_CHOICE_LIST); 
+0

「android.support.v4.app.DialogFragment」をインポートし、「android.app.DialogFragment」をインポートしていないことを確認してください。後でgetFragmentManagerを取得し、getSupportFragmentManagerは取得しません。 –

+0

私は 'android.support.v4.app.DialogFragment'だけをインポートしました。また、あなたのソリューションを試してみると、エラーDialogFragmentEditProfileを解決できません。戻り値の型が正しくなければなりません –

+0

編集されたコードを確認してください –

関連する問題