2016-04-21 4 views
1

私はリストビューを持っています。特定のオプションをクリックすると、新しいインテントを作成します。メニュー項目のように。これは私の初めてのリストビューでの作業ですので、これを行う正しい方法が欠落している可能性がありますが、簡単に修正できますか?クリックコールバック後の新しいインテント

private void registerClickCallback() { 
    ListView list = (ListView) findViewById(R.id.mainlist); 
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) { 
     TextView textView = (TextView) viewClicked; 
     Toast.makeText(main.this, position, Toast.LENGTH_SHORT).show(); 
     if(textView.getText().toString() == "my Profile"){ 
      Intent intent = new Intent(this.getApplicationContext(), myProfile.class); 
      startActivity(intent); 
     } 
    } 
}); 

cannot resolve method 'getapplicationcontext'

+0

文字列を間違って比較しているようです。 '=='の代わりに '.equals()'を使うべきです。別の問題がある場合は、何が起きているのかを明確にする必要があります。 – codeMagic

+1

@codeMagicこの質問は、文字列の比較とはほとんど関係がありません。「IF」は確かに修正する必要がありますが、実際の問題はエラー 'メソッドを解決できません' getApplicationContext() 'したがって質問は異なります.. imho – FredMaggiowski

+1

@FredMaggiowskiうん、私はそれを逃した。私にピンを当てて指摘してくれてありがとう。私は再開する。ストリングの比較は次の問題となる可能性が最も高いです。代わりに 'viewClicked.getContext()'を使ってください。 – codeMagic

答えて

0

てみてください - MainActivityあなたはonItemClick()を実施し、彼の活動である

Intent intent = new Intent(MainActivity.this, myProfile.class); 
startActivity(intent); 

。 アクティビティ名で置き換える必要があります。

2

this.getApplicationContext()にはnew AdapterView.OnItemClickListener()の中にいるので、thisにはそのメソッドがありません。

アプリケーションコンテキストを含むクラスフィールドを作成して使用するか、@ codeMagicの推奨に従ってviewClicked.getContext()を使用する必要があります。

また、コメントで読んだことがあるように、文字列比較には.equalsを使用する必要があります。 ==演算子では不十分です。

関連する問題