【发布时间】:2017-07-20 13:00:07
【问题描述】:
我正在为我想在我的片段类中使用的警报对话框编写一个类。我已经在这个类上实现了 AdapterView.OnitemClickListener。我已经为标题、上下文、项目、请求代码、侦听器声明了私有字段。我创建了一个构造函数。现在我想调用这个类并想为不同的目的设置不同类型的字符串。但是我收到声明构造函数的错误。我想知道如何在片段类中调用这个构造函数。我的警报对话框类代码是
public class Alert extends Dialog implements AdapterView.OnItemClickListener{
public interface OnDialogItemClickListener {
void onDialogItemClick(int requestCode, int position,String item);
}
private String title;
private Context context;
private String[] items;
private int requestcode;
private OnDialogItemClickListener listener;
public Alert(Context context, String title, String[] items, int requestcode, OnDialogItemClickListener listener) {
super(context,R.style.DialogTheme);
this.title = title;
this.items = items;
this.requestcode = requestcode;
this.listener = listener;
}
private TextView textView;
private ListView listView;
private Button cancel;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_alertlist_contact);
textView = (TextView) findViewById(R.id.title);
listView = (ListView) findViewById(R.id.listView1);
cancel=(Button)findViewById(R.id.cancel_button);
adapter = new ArrayAdapter<String>(context, R.layout.first_alertlist_textstyle,android.R.id.text1, items);
textView.setText(title);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
listener.onDialogItemClick(requestcode,i, adapter.getItem(i));
dismiss();
}
}
我的 MainFragment 类是
public class MainFragment extends DialogFragment implements View.OnClickListener {
private static final int REQUEST_CODE_SECOND = 2;
private static final int REQUEST_CODE_FIRST = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
Button button1 = (Button) view.findViewById(R.id.button1);
button1.setOnClickListener(this);
//registerForContextMenu(btn);
Button button2 = (Button) view.findViewById(R.id.button2);
button2.setOnClickListener(this);
return view;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
showFirstDialogwithList();
break;
.............
break;
}
}
private void showFirstDialogwithList() {
String[] companyName = getResources().getStringArray(R.array.company_name);
// I am getting error in this line
Alert alert=new Alert(getActivity().getApplicationContext(),"Contact", companyName,REQUEST_CODE_FIRST,getActivity());
alert.show();
【问题讨论】:
-
只要给
getActivity() -
@MohammedFarhan 它显示这不能应用
-
在这里发布你的日志
-
如果您的 api 是 23 及以上,请尝试提供
getContext() -
只使用 getActivity() 而不是 getActivity.getApplicationContext()
标签: android android-activity android-alertdialog android-context