استفاده از ActionBar در پروژه GoogleMap
با سلام
بنده میخوام در پروژه گوگل مپی که آقای آقا جانی در فایلهای آموزشی ارائه کردن (Geo Location) - بخش 03-17 از ActionBar
استفاده کنم ممکنه راهنمایی بفرمایید؟(روی API 7) یعنی میخوام اکشن بار تو همه ورژنها کار کنه(اندروید 2.1 به بالا)
کارهایی که انجام دادم :
1- ساخت پروژه Google API 2.1 در اکلیپس
2- اضافه کردن Support Library ورژن 7 و تغییرات لازمه در منیفست لایبرری و پروژه
اما هر کار میکنم رياR.java ساخته نمیشه در ضمن ورژن ADT وSDK که استفاده میکنم همونی است که آقای آقاجانی توی آموزشها قرار دادن
با تشکر
با سلام
مشکل تا حدودی حل شده فقط روی ورژنهای پایین کار نمیکنه( موقع باز کردن منو برنامه فورس کلوز میشه)
سلام
دوستان کسی میدونه چرا این کد روی اندروید 2.2 کار نمیکنه ولی روی اندروید 4. کار میکنه
در واقع هدف استفاده از اکشن بار تو ورژنهای پایین اندروید بوده;
================ MainActivity
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
public class ActionBarApi8Activity extends ActionBarActivity implements ActionBar.OnNavigationListener
{
// action bar
private ActionBar actionBar;
// Title navigation Spinner data
private ArrayList<SpinnerNavItem> navSpinner;
// Navigation adapter
private TitleNavigationAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
actionBar = getSupportActionBar();
// Hide the action bar title
actionBar.setDisplayShowTitleEnabled(false);
// Enabling Spinner dropdown navigation
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// Spinner title navigation data
navSpinner = new ArrayList<SpinnerNavItem>();
navSpinner.add(new SpinnerNavItem("Local", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("My Places", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Checkins", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Latitude", R.drawable.ic_launcher));
// title drop down adapter
adapter = new TitleNavigationAdapter(getApplicationContext(), navSpinner);
// assigning the spinner navigation
actionBar.setListNavigationCallbacks(adapter, this);
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId)
{
// TODO Auto-generated method stub
return false;
}
}
=============================== Class TitleNavigationAdapter
package com.r.h.app.acb;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class TitleNavigationAdapter extends BaseAdapter {
private ImageView imgIcon;
private TextView txtTitle;
private ArrayList<SpinnerNavItem> spinnerNavItem;
private Context context;
public TitleNavigationAdapter(Context context,
ArrayList<SpinnerNavItem> spinnerNavItem) {
this.spinnerNavItem = spinnerNavItem;
this.context = context;
}
@Override
public int getCount() {
return spinnerNavItem.size();
}
@Override
public Object getItem(int index) {
return spinnerNavItem.get(index);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item_title_navigation, null);
}
imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
imgIcon.setVisibility(View.GONE);
txtTitle.setText(spinnerNavItem.get(position).getTitle());
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item_title_navigation, null);
}
imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
txtTitle.setText(spinnerNavItem.get(position).getTitle());
return convertView;
}
}
=========================Class SpinnerNavItem
public class SpinnerNavItem {
private String title;
private int icon;
public SpinnerNavItem(String title, int icon) {
this.title = title;
this.icon = icon;
}
public String getTitle() {
return this.title;
}
public int getIcon() {
return this.icon;
}
}
===== list_item_title_navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<ImageView android:id="@+id/imgIcon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher"
android:layout_marginRight="5dp"
/>
<TextView android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/imgIcon"/>
</RelativeLayout>
==== ===================== AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.r.h.app.acb"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8"
android:maxSdkVersion="15"/>
<application
android:name=".RGlobal"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyThem">
<activity
android:name=".ActionBarApi8Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
============================== project.properties
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt
# Project target.
target=android-15
android.library.reference.1=../android-support-v7-appcompat
================================= ٍError
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:458)
at android.view.View.measure(View.java:8171)
at android.support.v7.internal.widget.ListPopupWindow$DropDownListView.measureHeightOfChildrenCompat(ListPopupWindow.java:1323)
at android.support.v7.internal.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1062)
at android.support.v7.internal.widget.ListPopupWindow.show(ListPopupWindow.java:514)
at android.support.v7.internal.widget.SpinnerICS$DropdownPopup.show(SpinnerICS.java:758)
at android.support.v7.internal.widget.SpinnerICS.performClick(SpinnerICS.java:443)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
دوستان نمیدونم چرا ولی من RelativeLayout رو به LinearLayout تبدیل کردم و درست شد
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .