【问题标题】:Update the text get from listView.onItemClick to a button将从 listView.onItemClick 获取的文本更新为按钮
【发布时间】:2017-11-22 16:13:07
【问题描述】:

我确实设法从 listView.onItemClick 中获取文本,而当我将文本设置为按钮时出现错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.Button.setText(java.lang.CharSequence)”

更新下面的完整代码: SubjectDialogActivity.java

package x.reminder;

import ...;

public class SubjectDialogActivity extends Activity {

    ListView listViewSubject;
    ArrayList<String> arrayListSubject;
    ArrayAdapter<String> arrayAdapterSubject;
    String subjectText;
    Button btnSub;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog_subject);

        //Sizing...

        //Create list...

        //Errorrrrrrrrrrrrrrr
        //Set On Click
        listViewSubject.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                btnSub = (Button)findViewById(R.id.btnSubject);
                String selectedText = listViewSubject.getItemAtPosition(position).toString(); 
                btnSub.setText(selectedText);

            }
        });
    }


    public void addSubjectClick(View v){
        ...
        intent.setClass(SubjectDialogActivity.this, AddSubjectActivity.class);
        ...
    }

    @Override
    protected void onActivityResult...
    }
}

xml - activity_add.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout ...">

<LinearLayout
  ...>

<Button
android:id="@+id/btnSubject"
...
android:text="Subject"
android:onClick="showDialogSubjectList"/>

</LinearLayout>

</RelativeLayout>

【问题讨论】:

  • R.id.btnSubject 在 xml 中检查是否存在
  • .... 它必须呈现在您的 ROW_layout.xml
  • 有。 虽然它不是 setContentView(R.layout.***) 中的那个。那会是问题吗?如果是这样,我们如何定义它?
  • 我认为按钮不在 listView 项内..??
  • 按钮在另一个activity中,不在listView中

标签: android listview button


【解决方案1】:

我个人认为,当您将属性连接到 xml 时,应该在 onCreate 方法的开头完成。

至于错误,您需要找到空对象,在这种情况下是您的按钮。尝试在 onCreate 中移动 findviewbyid 部分

【讨论】:

  • 不幸的是,将其移至 onCreate 的开头不起作用:/
  • 请用类的完整代码和xml文件更新问题
  • 我已经更新了代码,但由于网站不允许提交太多代码,我将其中一些代码替换为“...”。
  • 让我们试着找出实际的问题,你能不能把 findviewbyid 部分放在 onCreate 方法中,也写 btn.settext("testing") 看看错误是否继续
  • 是啊..错误还在,我其实想知道是不是因为这个java类的setContentView()中没有设置按钮所在的xml文件?
【解决方案2】:
String selectedText = arrayListSubject.get(position);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多