Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-使用自定义onKeyPreIme(backpress)更改按钮文本和文本视图可见性_Java_Android - Fatal编程技术网

Java Android-使用自定义onKeyPreIme(backpress)更改按钮文本和文本视图可见性

Java Android-使用自定义onKeyPreIme(backpress)更改按钮文本和文本视图可见性,java,android,Java,Android,我制作了一个自定义的EditText,这样我就可以覆盖当屏幕上有键盘时按下back键时发生的情况。() 当按下back键时,我想做四件事:设置布尔值、更改自定义EditText的文本、更改按钮的文本以及更改TextView的可见性。所有这四个文件都在不同的文件中(我相信这可能是导致问题的原因)。但我可以找到它们,并调整其中两个而不会崩溃 public class NiceEditText extends EditText { Context context; public Ni

我制作了一个自定义的EditText,这样我就可以覆盖当屏幕上有键盘时按下back键时发生的情况。()

当按下back键时,我想做四件事:设置布尔值、更改自定义EditText的文本、更改按钮的文本以及更改TextView的可见性。所有这四个文件都在不同的文件中(我相信这可能是导致问题的原因)。但我可以找到它们,并调整其中两个而不会崩溃

public class NiceEditText extends EditText {
    Context context;

    public NiceEditText(Context contx, AttributeSet attrs){
        super(contx,attrs);
        this.context = contx;
    }

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (ListActivity.addedTitle) ListActivity.addedTitle = false;
            NiceEditText editItem = (NiceEditText) findViewById(R.id.editItem);
            editItem.setText("");
            Button niceButton = (Button) findViewById(R.id.niceButton);
//            niceButton.setText(R.string.addItem);
            TextView addingTitle = (TextView) findViewById(R.id.addingTitle);
//            addingTitle.setVisibility(View.INVISIBLE);
        }
        return super.onKeyPreIme(keyCode, event);
    }
}
这两行注释导致应用程序因NullPointerException而崩溃。我想知道这是否是因为它既找不到按钮也找不到文本视图,但它可以找到文本并对其进行更改

Q:如何更改按钮的文本和文本视图的可见性?

// niceButton.setText(R.string.addItem);
这一行是导致
NullPointerException
错误的原因。将其更改为:

niceButton.setText(getResources().getString (R.string.addItem));

我必须像这样设置一个活动变量:

public void setActivity(Activity a){
    this.activity = a;
}
Button niceButton = (Button) activity.findViewById(R.id.niceButton);
TextView addingTitle = (TextView) activity.findViewById(R.id.addingTitle);
这是在实际活动的onCreate中调用的。然后在onKeyPreIme中,我必须像这样调用getViewById:

public void setActivity(Activity a){
    this.activity = a;
}
Button niceButton = (Button) activity.findViewById(R.id.niceButton);
TextView addingTitle = (TextView) activity.findViewById(R.id.addingTitle);
它现在不再触发空指针并工作

然而,出于某种原因,
NiceEditText editItem=(NiceEditText)findViewById(R.id.editItem)不必在活动中调用即可工作