2016-05-05 8 views
0

ユーザーが書き込みを終了したときにアクティビティーを開始しようとしています。 アクティビティを起動する代わりに、プログラムを再度実行しているようです。 私は、正しいアクティビティを起動する代わりに、これが私のプログラムの最初のアクティビティを起動する代わりに、この原因を言います。ここでsetOnEditorActionListenerがナビゲーション・ドロワーのアクティビティーを起動しない

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; 
    } 
} 

ためのコードであるここで事前

答えて

0

にコードを変更してみてください。 最初にif(!event.isShiftPressed())を取り出しました。イベントが送信され、エラーが発生しました。プログラムはまだ私が望むように動作しているので、それはうまくいることに気づいた。 2番目の問題は、私がアクティビティを起動するときにエラー(クラスにゼロ引数がありません)を与えていたことです。これを解決して、空のparametrerコンストラクタ配列を配置することによって、私はこれをthreadから学んだ。そこに私はなぜこれをするべきなのかを説明します。

ここに新しいコードを入れました。私はちょうどEditText.OnEditorActionListenerはこれだけ、これはクラッセの私に私を送りますputing別のクラスに私はこの原因を使用することはできません

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; 
} 

}

0

にありがとう、私が使用例です。

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

だから、最終的に私は問題を修正することができた。この

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

〜で。私はMainActivity.thisを使用する必要があります。とにかくありがとう、 – SuperMan19

関連する問題