1

私はたくさんの投稿を調べて試しましたが、何も機能していないようです。おそらく私が見逃したものだと思います。これが私がやろうとしていることと私の問題です:グローバル変数を作成しようとしているので、メインアクティビティで、ユーザーがリストビューからアイテムを選択したときに、そのアイテムを変数に割り当て、私のアプリケーション全体でそれを使用してください。

最初にクラスを作成し、次のようにアプリケーションに拡張します。

import android.app.Application;

パブリッククラスGlobalVariablesはApplication{を拡張します

private String mStringValue;

public String getSomeVariable() {
    return mStringValue;
}

public void setSomeVariable(String someVariable) {
    this.mStringValue = someVariable;
}

}

次に、メインアクティビティで、このコードを配置して変数を設定します。

public class MainActivity extends Activity {    

@Override 
public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.activity_main);     


 ListView.setOnItemClickListener(new OnItemClickListener() {    

 @Override   
 public void onItemClick(AdapterView<?> listView, View view,       
int position, long id) {    

// Get the cursor, positioned to the corresponding row in the result set    
Cursor cursor = (Cursor) listView.getItemAtPosition(position);      
// Get the Customer Name from this row in the database.    
String countryCode = cursor.getString(cursor.getColumnIndexOrThrow("CustomerName"));    

Toast.makeText(getApplicationContext(), countryCode, Toast.LENGTH_SHORT).show();      

((GlobalVariables) this.getApplication()).setSomeVariable(countryCode);

   }   

});  

問題は、次の行に「メソッドgetApplication()がタイプnew AdapterView.OnItemClickListener(){}に対して未定義です」というエラーが表示されることです。

((GlobalVariables) this.getApplication()).setSomeVariable(countryCode);

次のコードを実行するように提案された投稿の1つを読みましたが、別の複数のエラーが発生します。

  • getApplication()メソッドは、GlobalVariables型に対して未定義です。
  • GlobalVariablesタイプの囲んでいるインスタンスはスコープ内でアクセスできません

    ((GlobalVariables)GlobalVariables.this.getApplication())。setSomeVariable( "foo");

あなたが私に与えることができるどんな助けでも大いに感謝されるでしょう。

ありがとうございました、

ティム

4

2 に答える 2

0

OnItemClickListener()はanonymous-inner-classです。つまり、そのthis中にいるときは、実際にはメソッドを持たないthisタイプのオブジェクトを参照します。OnItemClickListenergetApplication()

試す:

((GlobalVariables) MainActivity.this.getApplication()).setSomeVariable(countryCode);
于 2013-03-27T02:18:16.223 に答える
0

GlobalVariablesを次のように定義してみませんか。

public class GlobalVariables
{
    static String mStringValue;
}   

次に、アプリケーションのどこでも、GlobalVariables.mStringValueたとえばGlobalVariables.mStringValue=countryCode;として使用できます。

于 2013-03-27T02:21:47.917 に答える