Attempt to invoke virtual method 'java.lang.Ch

2019-07-29 15:46发布

I'm getting this null exception:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.TextView.getText()' on a null object reference

and I don't know why.

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setTheme(R.style.LoginRegister);
        setContentView(R.layout.activity_report);

final TextView infoid = (TextView) findViewById(R.id.idInfo);

        RadioGroup rg = (RadioGroup)findViewById(R.id.rg);
        final String radiovalue = ((RadioButton)findViewById(rg.getCheckedRadioButtonId())).getText().toString();

...

        Button sendButton = (Button) findViewById(R.id.button2);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String text = infoid.getText().toString(); //what is wrong?
                Log.w("message: ", radiovalue);
            }
        });


}

my xml

   <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/idInfo"
        android:hint="Add some extra information"
        android:layout_weight="0.09"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp" />

    <Button
        android:text="Report"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button2" />

any ideas?

2条回答
Evening l夕情丶
2楼-- · 2019-07-29 16:06
  1. Make sure TextView idInfo is exist in your activity_report.xml
  2. Try declaring idInfo as global.

    ..............
    ....................
    
    TextView infoid;
    
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.activity_report);
    
        infoid = (TextView) findViewById(R.id.idInfo);
    
        .............
        ...................
    
        Button sendButton = (Button) findViewById(R.id.button2);
        sendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String text = infoid.getText().toString();
                ..........
                .................
            }
        });
    
    }
    

UPDATE:

To get selected radioButton text:

RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rg);

// get selected radioButton from radioGroup
int selectedId = radioGroup.getCheckedRadioButtonId();

// find the radioButton by returned id
radioButton = (RadioButton) findViewById(selectedId);

// radioButton text
String radiovalue = radioButton.getText();

Hope this will help~

查看更多
霸刀☆藐视天下
3楼-- · 2019-07-29 16:11
if (radioGroup.getCheckedRadioButtonId() <= 0) {
    Toast.makeText(yourclass, "Choose Radio Button Please", Toast.LENGTH_SHORT).show();
}
查看更多
登录 后发表回答