سؤال

لقد قمت بتنفيذ "شاشة رئيسية" لتطبيقي، والتي تتكون من عرض شبكي يحتوي على أيقونات ونص.يعمل هذا بشكل جيد، ويمكنني إضافة 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

هل كانت مفيدة؟

المحلول

الطريقة الأولى (طريقتي المفضلة)

إن تمرير 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);

نصائح أخرى

مجرد استخدام giveacodicetagpre.

وكل شيء سهل

يجب أن يكون السياق سياق النشاط الحالي."هذا" سيعمل بشكل رائع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top