setOnEditorActionListener未在导航抽屉上启动活动

时间:2016-05-05 17:13:23

标签: android android-intent android-edittext

所以当用户完成写作时,我试图启动一个Activity。 但是,它似乎再次运行程序,而不是启动Activity。 我说的是这个原因,而不是启动正确的活动,它启动了我的程序的第一个活动。

search.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH ||
            actionId == EditorInfo.IME_ACTION_DONE ||
            event.getAction() == KeyEvent.ACTION_DOWN &&
            event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            if (!event.isShiftPressed()) {
                // the user is done typing.
                text = search.getText().toString();
                new SearchActivity(text);
                Intent it = new Intent(MainActivity.this, SearchActivity.class);
                startActivity(it);
                return true; // consume.
            }
        }
        return false;
    }
});

以下是SearchActivity的代码

public class SearchActivity extends AppCompatActivity {
    private String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_activity);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    public SearchActivity(String text) {
        this.text = text;
    }
}

提前谢谢

2 个答案:

答案 0 :(得分:0)

这是我使用的一个例子。

startActivity(new Intent(this, AboutActivity.class));
 return true;'

尝试将代码更改为此

Intent it = new Intent(this, SearchActivity.class);

答案 1 :(得分:0)

所以最后我能够纠正这个问题。 首先我拿出了if(!event.isShiftPressed()),发送错误并且事件为空。我注意到这很好,因为程序仍然按照我想要的方式工作。第二个问题是当我启动活动时它给出了错误(类没有零参数)。通过解决这个问题,我把put和空参数构造函数数组。我从这个thread中学到了这一点。它解释了为什么我应该这样做。

我在这里放了新代码。

search.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                    actionId == EditorInfo.IME_ACTION_DONE ||
                    event.getAction() == KeyEvent.ACTION_DOWN &&
                            event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                    // the user is done typing.
                    text=search.getText().toString();
                    new SearchActivity(text);
                    Intent it = new Intent(MainActivity.this, SearchActivity.class);
                    startActivity(it);
                    return true; // consume.
            }
            return false;
        }
    });

现在是SearchActivity

public class SearchActivity extends AppCompatActivity {
private String text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search_activity);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
}

public SearchActivity(String text){
    this.text=text;
}

public SearchActivity(){
    this.text=null;
}

}