首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在alertDialog中使用自旋器时出现空指针异常

在alertDialog中使用自旋器时出现空指针异常
EN

Stack Overflow用户
提问于 2012-06-07 04:12:21
回答 3查看 973关注 0票数 1

这就是我写的代码:

代码语言:javascript
复制
// create a view in dialog box
final View fileView = getLayoutInflater().inflate(R.layout.filename, null);
String[] array_spinner = new String[5];
array_spinner[0]="1";
array_spinner[1]="2";
array_spinner[2]="3";
array_spinner[3]="4";
array_spinner[4]="5";

Spinner s = (Spinner) findViewById(R.id.sp_CAT);
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_spinner_item, array_spinner);
s.setAdapter(adapter);
s.setSelection(2);

//Spinner mCAT = (Spinner) findViewById(R.id.sp_CAT);
//ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
//fileView.getContext(), R.array.a_CAT, android.R.layout.simple_spinner_item);
//adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//mCAT.setAdapter(adapter);

EditText mSID = (EditText) fileView.findViewById(R.id.et_SID);
EditText mSCD = (EditText) fileView.findViewById(R.id.et_SCD);
EditText mNUM = (EditText) fileView.findViewById(R.id.et_NUM);
final String tSID=mSID.getText().toString();
final String tSCD=mSCD.getText().toString();
final String tNUM=mNUM.getText().toString();

// show dialog box
new AlertDialog.Builder(CameraActivity3.this).setTitle("Set FileName")
  .setView(fileView)
  .setPositiveButton("OK", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {

      Toast.makeText(CameraActivity3.this, tSID+tSCD+tNUM, Toast.LENGTH_SHORT).show();

    }// public void onClick
  }) // setPositiveButton
  .setNegativeButton("Cancel", null).show();

但是,我正在接收一个空指针异常。经过一些测试(注释掉一些行),它似乎与spinner适配器有关。我出什么问题了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-07 04:14:43

用这个:

代码语言:javascript
复制
Spinner s = (Spinner) fileView.findViewById(R.id.sp_CAT);
票数 5
EN

Stack Overflow用户

发布于 2012-06-07 05:45:23

在代码行下面写

代码语言:javascript
复制
Spinner s = (Spinner) fileView.findViewById(R.id.sp_CAT);

而不是

代码语言:javascript
复制
Spinner s = (Spinner) findViewById(R.id.sp_CAT);
票数 2
EN

Stack Overflow用户

发布于 2013-04-22 15:31:16

对于将来使用DialogFragment构建AlertDialog的人来说,不能只在ArrayAdapter中使用this。我的解决办法如下:

代码语言:javascript
复制
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    View myView = inflater.inflate(R.layout.program_num_spinner_popup, null);

    builder.setView(myView);

    programNumbers = (Spinner) myView.findViewById(R.id.prog_num_spinner_list);
    ArrayAdapter<CharSequence> numbersAdapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.program_numbers, android.R.layout.simple_spinner_item);
    numbersAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    programNumbers.setAdapter(numbersAdapter);

我将this替换为this.getActivity(),并结合Zaz的答案和Dipak的答案(这是相同的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10925561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档