0

アイコンとテキストを含むグリッドビューで構成されるアプリケーションの「ホーム画面」を実装しました。これは問題なく動作します。たとえば、アイコンをタップするとトーストが作成されるように、OnItemClickListener を追加できます。しかし、ここから startActivityForResult() を呼び出す方法がわかりません。アプリケーション コンテキストを渡して、これを使用してインテントなどを作成することもできますが、これは正しい方法とは思えません。

私のコードは次のようになります。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            switch(position){
            case 0:
                //need to start new activity 1 from here
                break;
            case 1:
                //need to start new activity 2 from here
                break;
            }
        }
    });

助けてくれてありがとう、

TLB

4

3 に答える 3

1

方法 1 (私の好みの方法)

ActivityName.this をコンテキストとして渡すのが私のやり方です。例えば

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    GridView gridview = (GridView) findViewById(R.id.icons_gridview);
    gridview.setAdapter(new HomeScreenAdapter(this));

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        switch(position){
        case 0:
            Intent intent = new Intent(MyActivity.this, NextActivity.class);
            startActivityForResult(intent, 0);
            break;
        case 1:
            //need to start new activity 2 from here
            break;
        }
    }
});

方法 2

getApplicationContext()コンテキストとして渡すことができます。

方法 3

Context mContextフィールドを持つことは一般的な方法です。onCreateあなたの活動を開始するために使用し、あなたの開始時にそれを設定しmContextます。

private Context mContext;

それから

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.title);

    mContext = this;

    ...
 }

次に、mContext をコンテキスト パラメーターとして使用して、新しいアクティビティを開始できます。

Intent intent = new Intent(mContext, NextActivity.class);
startActivityForResult(intent, 0);
于 2012-02-25T16:56:50.020 に答える
0

コンテキストは、現在のアクティビティのコンテキストである必要があります。「これ」は見事に機能します。

于 2012-02-25T16:59:38.153 に答える
0

使うだけ

startActivityForResult(new Intent(MainActivity.this, Activity1.class));

そしてすべてが簡単です

于 2012-02-25T16:57:42.757 に答える