私はアンドロイドの初心者で、私は単純な仕事と思われます。オープンダイアログのフラグメントonClick of ExpanandableListViewの子要素のクリック
私はExpandableListView
とDialogFragment
クラスを持っています。私はエラーを取得する上記のコードで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のアクティビティのコンテキストが渡されているので:任意の助け
「android.support.v4.app.DialogFragment」をインポートし、「android.app.DialogFragment」をインポートしていないことを確認してください。後でgetFragmentManagerを取得し、getSupportFragmentManagerは取得しません。 –
私は 'android.support.v4.app.DialogFragment'だけをインポートしました。また、あなたのソリューションを試してみると、エラーDialogFragmentEditProfileを解決できません。戻り値の型が正しくなければなりません –
編集されたコードを確認してください –