Android EditText抛出NullPointerException

时间:2016-01-28 19:50:29

标签: java

我一直在尝试很多东西,但仍然不知道发生了什么, 我想将url地址输入到editText然后保存到String中,或者在用户点击按钮后将此文本设置为TextView

然后我得到了

HALP

  

java.lang.IllegalStateException:无法执行方法   安卓的onClick                                                                                 在   android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick

     

引起:java.lang.reflect.InvocationTargetException

     

引起:java.lang.NullPointerException:尝试调用虚拟   方法' android.text.Editable android.widget.EditText.getText()'在...上   null对象引用

Button button1;
    TextView txtspr;
     EditText   urlInputEditText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
                button1=(Button) findViewById(R.id.button);

                txtspr=(TextView)findViewById(R.id.textSprawdzajacy);
                urlInputEditText=(EditText) findViewById(R.id.editText);

                //(EditText)findViewById(R.id.editText);

            }
        });
    }

   public void onClick(View view) {

            String n=urlInputEditText.getText().toString();
            txtspr.setText(n);


        //new DownloadAsync(this,n).execute();

    }

2 个答案:

答案 0 :(得分:0)

您缺少从资源中为urlInputEditText分配任何值。

由于此部分仅根据您的代码调用onClick()

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ....
                button1=(Button) findViewById(R.id.button);
         urlInputEditText=(EditText) findViewById(R.id.editText);

将分配移出onCreate()

中的某个位置

答案 1 :(得分:0)

<强>原因: 你点击button1但它尚未初始化(初始化在FloatingActionButton内)

<强>解决方案 试试这段代码:

Button button1;
TextView txtspr;
EditText   urlInputEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    button1=(Button) findViewById(R.id.button);

            txtspr=(TextView)findViewById(R.id.textSprawdzajacy);
            urlInputEditText=(EditText) findViewById(R.id.editText);
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

public void onClick(View view) {
        String n=urlInputEditText.getText().toString();
        txtspr.setText(n);
}