PDA

View Full Version : action bar & android 2.1



shahin bahari
یک شنبه 03 آذر 1392, 02:49 صبح
سلام دوستان.
کسی از دوستان تونسته اکشن بار رو روی API level 7 استفاده کنه؟!
کد ها مشکلی نداره ولی برنامه کرش میکنه و فکر میکنم به خاطر theme باشه چون theme که خود گوگل گفته بود بزارید رو هرکاری کردم نشناخت و من با theme که قبلا بود اجراش کردم.
drawer navigation رو تو برنامه میخواستم اضافه کنم. اما هرچی مثال هست براش با action bar هست! البته فکر کنم بشه مستقل هم اجراش کرد! فردا تست میکنم خبرش رو میدم. الان دیگه واقعا خسته شدم.....

rubiks.kde
یک شنبه 03 آذر 1392, 04:02 صبح
کلاس action bar که در خود اندورید وجود داره از ورژن 11 به بعد قابل استفاده است و در ورژن های پایین نمیشه ازش استفاده کرد.

البته راهایی وجود داره و اونم اینه که خودتون از صفر بنویسید و یا از کتابخونه ActionBarSherlock استفاده کنید که براتون پیاده سازی action bar رو توی هر ورژنی امکان پذیر میکنه

hamedjj
یک شنبه 03 آذر 1392, 15:40 عصر
البته کتابخونه holoeverywhere هم عالیه

https://github.com/Prototik/HoloEverywhere

shahin bahari
یک شنبه 03 آذر 1392, 19:37 عصر
ممنون از جواب دوستان ولی منظور من actionbar خود اندروید بود. تا چند وقت پیش خودم مینوشتم ولی توی support package 19 اکشن بار و gridLAyout و.... هم برای اندروید 7 به بعد ارایه شد. (همون طور که تو support package فکر کنم 15 که استفاده از فرگمنت ها برای اندروید 4 به بعد ممکن شد)
گفتم حالا که میشه از کلاس خود اندروید استفاده کنیم!113194

abbasalim
یک شنبه 03 آذر 1392, 20:56 عصر
ممنون از جواب دوستان ولی منظور من actionbar خود اندروید بود. تا چند وقت پیش خودم مینوشتم ولی توی support package 19 اکشن بار و gridLAyout و.... هم برای اندروید 7 به بعد ارایه شد. (همون طور که تو support package فکر کنم 15 که استفاده از فرگمنت ها برای اندروید 4 به بعد ممکن شد)
گفتم حالا که میشه از کلاس خود اندروید استفاده کنیم!113194
اره منم یه چیزایی دیده و شنیدم ولی نتونستم ازش استفاده کنم
شما موفق شدید؟ اگه آره توضیح plz

shahin bahari
یک شنبه 03 آذر 1392, 21:07 عصر
اره منم یه چیزایی دیده و شنیدم ولی نتونستم ازش استفاده کنم
شما موفق شدید؟ اگه آره توضیح plz
موفق شده بودم که دیگه سوال نمیکردم:لبخند:
مشکل سر theme هستش که باید یکی از theme هایی که تو یه style داخل این پکیج هست رو به اکتیویتی بدیم ( بنا به گفته خود گوگل) اما من هرکاری کردم نشد که اون style رو اضافه کنم! یعنی اصلا پیداش نکردم. دلیل کرش کردن هم به نظرم همین بود چون کل کد جاوا comment بود و تنها تغییر این بود که کلاس از ActionBarActivity مشتق شده بود.

shahin bahari
دوشنبه 04 آذر 1392, 00:47 صبح
سلام دوستان.
drawer navigation رو تو برنامه میخواستم اضافه کنم. اما هرچی مثال هست براش با action bar هست! البته فکر کنم بشه مستقل هم اجراش کرد! فردا تست میکنم خبرش رو میدم. الان دیگه واقعا خسته شدم.....
خوب.drawer navigation رو بدون اکشن بار تست کردم. هیچ مشکلی نداشت و این دو ربطی به هم ندارند که حتما با هم باشند.
113202
وقتی کلید Button رو بزنید drawer باز میشه و وقتی جای دیگه کلیک کنید بسته میشه! این که اکشن بار تو اسکرین شات هست به خاطر theme هست و من تو کد اون رو صدا نکردم! روی دیوایس قدیمی تر تست کردم بدون مشکل بود و اکشن بار هم نبود!
به خاطر theme خیلی دارک هم ببخشید. دیگه همه چیز برا تست بود و همه چیز رو همون جور که بود گزاشتم.
اما کد! از فرگمنت استفاده کردم برای همین فایل main و فرگمنت جداست.
اول مین:
package com.shahin.SafeGallery;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.shahin.SafeGallery.First.Click;

public class MainActivity extends FragmentActivity implements Click{

DrawerLayout dl;
String[] list={"first","second","third","forth"};
ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dl=(DrawerLayout) findViewById(R.id.drawer_layout);
lv=(ListView) findViewById(R.id.left_drawer);

lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list));
//lv.setOnItemClickListener(new DrawerItemListener());
FragmentManager frman = getSupportFragmentManager();
Fragment fr = frman.findFragmentById(R.id.content_frame);
if (fr == null) {
FragmentTransaction frt = frman.beginTransaction();
frt.add(R.id.content_frame,new First());
frt.commit();
}
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
//return true;
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);

}



@Override
public void Clicked() {
if(dl.isDrawerOpen(Gravity.LEFT)){
dl.closeDrawers();
Toast.makeText(getApplication(), "on close", Toast.LENGTH_SHORT).show(); //never happened
}else{
dl.openDrawer(Gravity.LEFT);
Toast.makeText(getApplication(), "on open", Toast.LENGTH_SHORT).show();
}

}

}

حالا فرگمنت:
package com.shahin.SafeGallery;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;

public class First extends Fragment{

public interface Click{
public void Clicked();
}

private Click c;
@Override
public void onAttach(Activity activity) {
try{

c=(Click)activity;
}catch(Exception e){
throw new ClassCastException("Must declare click");
}
super.onAttach(activity);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View v=inflater.inflate(R.layout.first, container,false);
Button b=(Button) v.findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
c.Clicked();
}
});
return v;
}


}

main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

crying sphere
جمعه 03 بهمن 1393, 12:25 عصر
سلام
یک سوال داشتم
توی قسمت فرگمنت خط 35

View v=inflater.inflate(R.layout.first, container,false);
اون first چیه؟ توی پروژم به من خطا میده.
ممنون