مثالی از Context Menu در اندروید

چهارشنبه 6 آبان 1394

در این مقاله قصد داریم یک Context Menu بسازیم و از طریق این Context Menu با انتخاب کردن یک آیتم یک Toast نمایش داده شود.

مثالی از Context Menu در اندروید

در زیر یک مثال ساده بیان می کنیم:

داخل ListView، activity زیر را بنویسید:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity" >

    <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="66dp"
            android:layout_marginTop="53dp" >
    </ListView>

</RelativeLayout>

یک ListView تعریف کرده ایم که تعدادی لیست به صورت دستی پر می نماید

داخل کلاس جاوا باید قطعه کد زیر را بنویسید:

import android.app.Activity;
import android.os.Bundle;
import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MyActivity extends Activity {
    ListView listView1;
    String contacts[]={"زهرا","مریم","سحر","مهرسا","نیلوفر"};
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView1=(ListView)findViewById(R.id.listView1);
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contacts);
        listView1.setAdapter(adapter);
        // Register the ListView  for Context menu
        registerForContextMenu(listView1);
    }
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.setHeaderTitle("انتخاب آیتم");
        menu.add(0, v.getId(), 0, "تماس");//groupId, itemId, order, title
        menu.add(0, v.getId(), 0, "پیام");
    }
    @Override
    public boolean onContextItemSelected(MenuItem item){
        if(item.getTitle()=="تماس"){
            Toast.makeText(getApplicationContext(),"کد تماس",Toast.LENGTH_LONG).show();
        }
        else if(item.getTitle()=="پیام"){
            Toast.makeText(getApplicationContext(),"ارسال کد پیام",Toast.LENGTH_LONG).show();
        }else{
            return false;
        }
        return true;
    }
}

یک لیست ویو تعریف کرده است و اسم مخاطبان را نوشته است، در متد OnCreate باید لیست ویو را تعریف کند و با یک ArrayAdapter لیست ویو صدا زده می شود

حالا متد OnCreateContexMenu را می نویسد و دو گزینه ی تماس و پیام را اضافه می کند

می خواهیم فقط یک کار کوچک انجام شود که با فشار بر روی هر مخاطب یک منو باز شود و دو گزینه ی تماس و یا پیام داشته باشد

که با زدن هر کدام از منو یک Toast نمایش داده شود

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید