【问题标题】:Android EditText throws NullPointerExceptionAndroid EditText 抛出 NullPointerException
【发布时间】:2016-01-29 04:30:01
【问题描述】:

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

然后我得到

暂停

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

原因:java.lang.reflect.InvocationTargetException

原因:java.lang.NullPointerException:尝试调用虚拟 方法'android.text.Editable android.widget.EditText.getText()' 空对象引用

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();

    }

【问题讨论】:

  • 能否获得您在代码中为editText 设置文本的资源?

标签: java


【解决方案1】:

原因: 您正在点击 button1 但它尚未初始化(init. 在 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);
}

【讨论】:

  • 好的,我是盲人:D 我注意到:P 我需要休息一下:D thx
【解决方案2】:

您无法从您的资源中为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()中某处的点击

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2013-03-11
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多