aminsh77

مشکل در NavigationDrawer

13 ارسال در این موضوع قرار دارد

سلام استادان عزیز

من یک اکتیویتی DrawerLayout دارم که یک منوی کشویی یا NavigationDrawer در سمت راست آن قرار دادم.

مشکلم اینکه نمیدونم از چه کدی استفاده کنم که مثلا هنگام کلیک بروی button1 باز بشه؟؟؟

نمیخوام بوسیله ی کلید پیش فرض اکشن بار باز شه و میخوام بوسیله ی کلیدی که خودم میخواهم باز شود

این کد های اکتیویتی من هست


   android:id="@+id/drawer_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >



   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@android:color/white" >



       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       android:text="Button" />





       android:id="@+id/drawer_list"
       android:layout_width="300.0dip"
       android:layout_height="fill_parent"
       android:layout_gravity="start"
       android:background="#FFFFFF" >










حالا در کلاس مربوط به این اکتیویتی از چه کدی برای button1 استفاده کنم که هنگام کلیک برروی اون NavigationDrawer باز شود؟؟؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

کسی نمیدونه ؟؟

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ازش ایده بردار دیگه ، من یه مثال میزنم برای یه imagebutton که توی صفحه هست :

[shcode=java]        ImageButton drawerbtn = (ImageButton) findViewById(R.id.drawerbtn);

        drawerbtn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {

                    drawerLayout.closeDrawer(Gravity.RIGHT);

                } else {

                    drawerLayout.openDrawer(Gravity.RIGHT);

                }

            }

        });[/shcode]

فقط به Gravity.RIGHT توجه کن ، اگر دراورت رو از سمت چپ باز میکنی باید Gravity.LEFT باشه

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

ازش ایده بردار دیگه ، من یه مثال میزنم برای یه imagebutton که توی صفحه هست :

[shcode=java]        ImageButton drawerbtn = (ImageButton) findViewById(R.id.drawerbtn);

        drawerbtn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {

                    drawerLayout.closeDrawer(Gravity.RIGHT);

                } else {

                    drawerLayout.openDrawer(Gravity.RIGHT);

                }

            }

        });[/shcode]

فقط به Gravity.RIGHT توجه کن ، اگر دراورت رو از سمت چپ باز میکنی باید Gravity.LEFT باشه

سلام این کد را امتحان کردم نشد اخطار میده

اینم عکسش

http://p30droid.com/Uploader/do.php?img=764

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اون رو که گفتم بهش توجه کن ، بنویسGravity.LEFT ببین چی میشه

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اون رو که گفتم بهش توجه کن ، بنویسGravity.LEFT ببین چی میشه

فایده نداشت

اینم کدهام

بر اساس اینا اگه میتونی کد بده

package ir.navigationdrawer;









import android.R.menu;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.NotificationCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

// لايوت طراحي شده براي اسلايد
DrawerLayout mDrawerLayout;

// ListView
RelativeLayout mDrawerList;

// ActionBarDrawerToggle
ActionBarDrawerToggle mDrawerToggle;

// نام اكشن بار
String mTitle = "";

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {

	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);



	Typeface yaghut=Typeface.createFromAsset(getAssets(), "font/b.ttf");		


PendingIntent pi = PendingIntent.getActivity(this,0,intent,Intent.FLAG_ACTIVITY_NEW_TASK);
mBuilder.setContentIntent(pi);
NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());


	ActionBar bar = getActionBar();
	bar.setDisplayHomeAsUpEnabled(true);
	boolean firstboot = getSharedPreferences("BOOT_PREF", MODE_PRIVATE)
			.getBoolean("firstboot", true);

	if (firstboot) {
		startActivity(new Intent(getApplicationContext(), FirstScreen.class));
		getSharedPreferences("BOOT_PREF", MODE_PRIVATE).edit()
				.putBoolean("firstboot", false).commit();
	}
	this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

	ImageView img1 = (ImageView) findViewById(R.id.imageView2);        
	img1.setOnClickListener(new OnClickListener() {

		   @Override
            public void onClick(View v) {
             //code marboot be dokmeye baz shodane menu


            }
        });




	 ImageView img = (ImageView) findViewById(R.id.imageView1);        
		img.setOnClickListener(new OnClickListener() {

    		@Override
    		public void onClick(View arg0) {	    		
 			        startActivity(new Intent(MainActivity.this, fav.class));	
    		}
    	});
		Button b = (Button) findViewById(R.id.button1);
		b.setTypeface(yaghut);
		b.setOnClickListener(new OnClickListener() {

		    @Override
		    public void onClick(View v) {
		        startActivity(new Intent(MainActivity.this, main.class));

		    }
		});
		Button c = (Button) findViewById(R.id.button4);
		c.setTypeface(yaghut);
            c.setOnClickListener(new OnClickListener() {

		    @Override
		    public void onClick(View v) {


		    }
		});


		getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#a0be46")));
	// اسم براي اكشن بار
	mTitle = (String) getTitle();
	// تعريف اسلايد
	mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
	// ليست ويو براي نمايش ايتم ها
	mDrawerList = (RelativeLayout) findViewById(R.id.drawer_list);
	// گرفتن لايوت و ايكن ها
	mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
			R.drawable.ic_drawer, R.string.drawer_open,
			R.string.drawer_close) {
		/** موقعه اي كه اسلايد بسته ميشه */
		public void onDrawerClosed(View view) {
			getActionBar().setTitle(mTitle);
			invalidateOptionsMenu();
		}
		/** موقعه اي كه اسلايد باز ميشه */
		public void onDrawerOpened(View drawerView) {
			getActionBar().setTitle("WhatsApp+");
			invalidateOptionsMenu();
		}
	};

	mDrawerLayout.setDrawerListener(mDrawerToggle);
	// ساخت اداپتور ، ايتم ها ، نام ايتم از ارايه ميگيريم

	// ست كردن اداپتور با ليست

	// فعال كردن كليد خانه
	getActionBar().setHomeButtonEnabled(true);
	// فعال كردن دكمه برگشت
	getActionBar().setDisplayHomeAsUpEnabled(true);
	// دستورات كليك روي هر ايتم در اسلايد


}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
	super.onPostCreate(savedInstanceState);
	mDrawerToggle.syncState();
}
/** تنظيم دكمه برگشت در اكشن بار */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
	if (mDrawerToggle.onOptionsItemSelected(item)) {
		return true;
	}
	if (item.getItemId() == R.id.search) {
		startActivity(new Intent(this, search.class));
	}
	if (item.getItemId() == R.id.fav) {
		startActivity(new Intent(this, fav.class));
	}
	if (item.getItemId() == R.id.action_settings) {
		startActivity(new Intent(this, setting.class));
	}
	return super.onOptionsItemSelected(item);
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
	// اگر روي ايتم در ليست كليك شد اسلايد مخفي بشه
	boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
	menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
	return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
	// آپشن منو در اكشن بار
	getMenuInflater().inflate(R.menu.main, menu);
	return true;



}












}








































































به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

کد زیر رو از متد onOptionsItemSelected پاک کن :

[shcode=java]        if (mDrawerToggle.onOptionsItemSelected(item)) {

            return true;

        }[/shcode]

به کد زیر هم احتیاجی نداری :

[shcode=java]    @Override

    public boolean onPrepareOptionsMenu(Menu menu) {

        // اگر روي ايتم در ليست كليك شد اسلايد مخفي بشه

        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);

        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);

        return super.onPrepareOptionsMenu(menu);

    }[/shcode]

بعدش هرجا خواستی کد زیر رو بذار ، عمل میکنه ، اگر نکرد متن خطا رو بذار :

[shcode=java]                if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {

                    drawerLayout.closeDrawer(Gravity.RIGHT);

                } else {

                    drawerLayout.openDrawer(Gravity.RIGHT);

                }[/shcode]

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

کد زیر رو از متد onOptionsItemSelected پاک کن :

[shcode=java]        if (mDrawerToggle.onOptionsItemSelected(item)) {

            return true;

        }[/shcode]

به کد زیر هم احتیاجی نداری :

[shcode=java]    @Override

    public boolean onPrepareOptionsMenu(Menu menu) {

        // اگر روي ايتم در ليست كليك شد اسلايد مخفي بشه

        boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);

        menu.findItem(R.id.action_settings).setVisible(!drawerOpen);

        return super.onPrepareOptionsMenu(menu);

    }[/shcode]

بعدش هرجا خواستی کد زیر رو بذار ، عمل میکنه ، اگر نکرد متن خطا رو بذار :

[shcode=java]                if (drawerLayout.isDrawerOpen(Gravity.RIGHT)) {

                    drawerLayout.closeDrawer(Gravity.RIGHT);

                } else {

                    drawerLayout.openDrawer(Gravity.RIGHT);

                }[/shcode]

بازم نشد اخطار توی عکسی که گذاشتم رو میده

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

متن خطا رو بذار

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

متن خطا رو بذار

خطای قبلو که یادته http://p30droid.com/Uploader/do.php?img=764  بود

من اومدم کد protected Object Gravity; بالای متد onCreate گذاشتم مشکل حل شد ولی حالا از LEFT و RIGHT اخطار میگیره عکس زیر رو ببین

http://p30droid.com/Uploader/do.php?img=765

فکر کنم اینم باید بالای متد onCreate تعریف بشه البته تعریف کردمش ولی بازم فایده نداشت

حالا موندم چه کنم

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

اگر متن پیام خطا رو بذاری راحت تر میشه راهنمایی کرد

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری