آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با تولبار Toolbar

saraei  9 سال پیش  9 سال پیش
0 0

با سلام . با بزرگ شدن پروژم سعی کردم کلاس هایی با کاربرد های جدا تعریف کنم . حالا با چند تا کلاس مشکل دارم .

در اکتیویتی هام من همیشه یک جور تولبار درست میکنم و این رو یک متد در کلاس اصلی من ( که همه اکتیویتی ها از اون ارس میبردن ) بود . این متد رو به یک کلاس دیگه بردم ولی حالا کار نمیکنه . هر چند با برگردوندن به کلاس قبلی درست میشه . اما میخام بدونم مشکل از کجاست . خلاصه کد ها رو اینجا میزارم تا دوستان کمک کنن .

public class SToolbar{


private ViewGroup main_layout;
private View action_bar_view;
private static Context context;
private static LayoutInflater inflater;
private ActionBar actionBar;

public SToolbar(Context _context ,int view_page){
context = _context ;
inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
main_layout = (ViewGroup) inflater.inflate(view_page, null);


}

public Toolbar create_custom_toolber(int id_toolbar, int toolbar_layout) {
Toolbar toolbar = (Toolbar) main_layout.findViewById(id_toolbar);
// setSupportActionBar(toolbar);
toolbar.setContentInsetsAbsolute(0, 0);
toolbar.setPadding(0, 0, 0, 20);
toolbar.setTitle("toolbar method");
toolbar.setBackgroundColor(Color.parseColor("#ffaa00"));

return toolbar;

// action_bar_view = inflater.inflate(toolbar_layout, null);


// actionBar = getSupportActionBar();
// actionBar = get_action_bar.get_support_action_bar();
// actionBar.setDisplayShowCustomEnabled(true);
// actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
// actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
// actionBar.setDisplayShowHomeEnabled(false); // remove app icon
// actionBar.setDisplayShowTitleEnabled(false); // remove app title
// actionBar.setDisplayUseLogoEnabled(false);
// actionBar.setCustomView(action_bar_view, new ActionBar.LayoutParams(
// ActionBar.LayoutParams.MATCH_PARENT,
// ActionBar.LayoutParams.MATCH_PARENT));
}


}

و در کلاس اکتیویتی :

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


SToolbar toolbar = new SToolbar(this, R.layout.activity_main);
setSupportActionBar(toolbar.create_custom_toolber(R.id.toolbar, R.layout.layout_toolbar_rtl));

}

و اینجا اصلا تولبار اصلاح نمیشه .



<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"/>

 

0 0
مشکل از اینجاست ک ساب کلاس های دیگه ی شما همه از این اکتیویتی اکستند شدن! و از اون اکتیویتی ک بهش میبرید اکستند نشدن! فلذا طبیعی هست ک از اون اکتیویتی دومی ارث نمیبرن و متد های اون اکتیویتی هم برای ساب کلاس ها ناشناخته هست ! (9 سال پیش)
0 0
من متوجه مشکل شما نشدم ولی برای اینکه از یک تولبار در همه جا استفاده کنید بهتره یک کلاس EnhancedActivity طبق آموزش ها بسازید و کد های تولبار رو ببرید داخل اون کلاس تا برای همه از روی یک کد ایجاد بشه . (9 سال پیش)
0 0
حرفتون متین آقای مهندس کاشی زاده . اما اگه بخام در یک کلاس دیگه باشه چی ؟ بجز کلاس اصلی (9 سال پیش)
0 0
بله ، برای اینکار همونطور که گفتم میتونید از EnhancedActivity استفاده کنید . درواقع هر اکتیویتی که از این کلاس extends شده باشه اکشن بار یا تولبار شما رو نشون میده . (9 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .