استدعاء startActivityForResult() داخل OnItemClickListener()
-
12-11-2019 - |
سؤال
لقد قمت بتنفيذ "شاشة رئيسية" لتطبيقي، والتي تتكون من عرض شبكي يحتوي على أيقونات ونص.يعمل هذا بشكل جيد، ويمكنني إضافة 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.
وكل شيء سهل
يجب أن يكون السياق سياق النشاط الحالي."هذا" سيعمل بشكل رائع.