Bir harita görüntüleyebileceğim Map.java sınıfım ve farklı işlemler gerçekleştirmek için SettingsActivity.java ve RaporActivity.java olmak üzere 3 tane sınıf var ve bunlar bir Tabhos kullanarak 3 tab a yerleştirmek istiyorum. TabActivity extends eden sınıfımda Map sınıfını eklemeyip sadece ReportActivity ve SettingsActivity sınıflarını ekleyince 2 tab olarak program düzgün çalışmaktadır. Ama 3.tab olarak Map sınıfını ekleyince program çalışmıyor.

TabActivity extends eden ve 3 sınıfımı tab a ekleyen ActivityTab.java sınıfım:

public class ActivityTab extends TabActivity {   
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        //set up full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab_activity);

        Resources ressources = getResources(); 
        TabHost tabHost = getTabHost();

        // Report tab
        Intent intentReport = new Intent().setClass(this, ReportActivity.class);
        TabSpec tabSpecReport = tabHost.newTabSpec("Report").setIndicator("Report").setContent(intentReport);

        // Settings tab
        Intent intentSettings = new Intent().setClass(this, SettingsActivity.class);
        TabSpec tabSpecSettings = tabHost.newTabSpec("Settings").setIndicator("Settings").setContent(intentSettings);

        // Settings tab
        Intent intentMap = new Intent().setClass(this, Map.class);      
        TabSpec tabSpecMap = tabHost.newTabSpec("Map").setIndicator("Map").setContent(intentMap);

        tabHost.addTab(tabSpecMap);
        tabHost.addTab(tabSpecReport);
        tabHost.addTab(tabSpecSettings);

        tabHost.setCurrentTab(0);

    }
  }

Map.java sınıfım:

import...

public class Map extends FragmentActivity {

    Unit unitObjectArray[];
    double dlati, dlongi;
    private String x;
    private GoogleMap mMap;
    private Marker customMarker;
    private LatLng markerLatLng;
    ImageView imageFromUrl;
    Bitmap bitmap;
    ProgressDialog mProgressDialog;
    View marker;
    AQuery androidQuery;
    int imageCount = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        //set up full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);

        Toast.makeText(getBaseContext(), "Please wait, connecting to server.",
                Toast.LENGTH_SHORT).show();
         marker = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE))
         .inflate(R.layout.custom_marker_layout, null);
         imageFromUrl= (ImageView)marker.findViewById(R.id.imageFromUrl);
         androidQuery = new AQuery(this);

        // Create Inner Thread Class
        Thread background = new Thread(new Runnable() {
            private final HttpClient Client2 = new DefaultHttpClient();
            String count = getIntent().getExtras().getString("custId");
            private String URL = "https://....";

            // After call for background.start this run method call
             public void run() {
                try {
                    String SetServerString = "";
                    HttpGet httpget2 = new HttpGet(URL);
                    ResponseHandler<String> responseHandler2 = new BasicResponseHandler();
                    SetServerString = Client2.execute(httpget2,
                            responseHandler2);
                    threadMsg(SetServerString);
                } catch (Throwable t) {
                    // just end the background thread
                    Log.i("Animation", "Thread  exception " + t);

                }
            }

            private void threadMsg(String msg) {
                if (!msg.equals(null) && !msg.equals("")) {
                    Message msgObj = handler.obtainMessage();
                    Bundle b = new Bundle();
                    b.putString("message", msg);
                    msgObj.setData(b);
                    handler.sendMessage(msgObj);
                }
            }

            // Define the Handler that receives messages from the thread and
            // update the progress
            private final Handler handler = new Handler() {

                public void handleMessage(Message msg) {
                    String response = msg.getData().getString("message");
                    try {

                        JSONArray jArr = new JSONArray(response);
                        unitObjectArray = new Unit[jArr.length()];

                        for (int i = 0; i < jArr.length(); i++) {
                            Unit units = new Unit();
                            JSONObject jsnparse = jArr.getJSONObject(i);
                            units.setdLatitude(jsnparse.getString("lat"));
                            units.setdLongitude(jsnparse.getString("lon"));     
                            units.setId(jsnparse.getInt("id"));
                            units.setUrl("http://.../img/avatar/"+jsnparse.getInt("id")+".png");
                            dlati = Double.parseDouble(units.getdLatitude());
                            dlongi = Double.parseDouble(units.getdLongitude());
                            units.setDlati(dlati);
                            units.setDlongi(dlongi);
                            unitObjectArray[i] = units;

                        }

                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    if ((null != response)) {
                        for (int i = 0; i < unitObjectArray.length; i++) {
                            Toast.makeText(
                                    getBaseContext(),
                                    "Server Response: "
                                            + unitObjectArray[i].getDlati()
                                            + unitObjectArray[i].getDlongi(),
                                    Toast.LENGTH_SHORT).show();
                            markerLatLng = new LatLng(unitObjectArray[i]
                                    .getDlati(), unitObjectArray[i].getDlongi());
                            setUpMapIfNeeded(i);
                        }
                    } else {
                        // ALERT MESSAGE
                        Toast.makeText(getBaseContext(),
                                "Not Got Response From Server.",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            };
        });
        // Start Thread 
        background.start(); // After call start method thread called run Method
    }
    private void setUpMapIfNeeded(int i) {
        // Do a null check to confirm that we have not already instantiated the
        // map.
        if (mMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
            // Check if we were successful in obtaining the map.
            if (mMap != null) {
                setUpMap(i);
            }
        } else {
            setUpMap(i);
        }
    }

    private void setUpMap(int i) {

                 String url = unitObjectArray[i].getUrl();

                            imageFromUrl= (ImageView)marker.findViewById(R.id.imageFromUrl);
        customMarker = mMap.addMarker(new MarkerOption s()
        .position(markerLatLng)
        .title("Latitude :" + markerLatLng.latitude + " and Longitude:"+ markerLatLng.longitude)
        .icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(this, marker))));

        final View mapView = getSupportFragmentManager().findFragmentById(R.id.map).getView();
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(markerLatLng, 10));
    }

    public void SetMarker(Bitmap object){
         markerLatLng = new LatLng(unitObjectArray[imageCount].getDlati(), unitObjectArray[imageCount].getDlongi());
         mMap.addMarker(new MarkerOptions().title("Latitude :" + markerLatLng.latitude + " and Longitude:"+ markerLatLng.longitude).icon(BitmapDescriptorFactory.fromBitmap(object)).position(markerLatLng));
         imageCount++;
    }

Ve şuanlık içerikleri aynı olarak Report ve Settings sınıflarım;

public class ReportActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);  
        //set up full screen
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is Report Tab");
        setContentView(textview);
    }
}

map.xml sayfam;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF" >

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

</RelativeLayout>

Ve tab_activity.xml sayfam:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@layout/tab_activity" >

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

Yardım ederseniz sevinirim. Şimdiden teşekkürler.

soruldu: 28 Ağu '14, 04:41

harunoguzorhan's gravatar image

harunoguzorhan
76447
cevap kabul oranı: 0%

değiştirildi: 28 Ağu '14, 04:46


İlk tahmınım json ile veri aldıgın thread ile sayfaya verileri set ettiin threadleri ayırman gerektiği yonunde.Cunku thread ıslem bıtırmeden harıtaya set etmeye calıstıgın bılgıler dolmamıs olabılır.Bunun ıcın de ya Uithread kullan yada asencron task kullan derım .Bence burdakı sorun bu. kabaca yaxzacagım

oncreate-->starttRead(Thread)-->setResult(runOnUiThread)

permanent link
Bu kayıt wiki sayfası olarak tanımlanmıştır.

cevaplandı: 28 Ağu '14, 10:25

Numan's gravatar image

Numan
673101422
cevap kabul oranı: 6%

Cevabınız için teşekkür ederim. Thread ile ilgili oldukça problem yaşadım özellikle asynctask sınıfı birden fazla resim indirmede fazla sorun çıkardı ve o problemi android-query ile çözdüm. Map in Tabhost a eklenememesinin nedenini de yeni farkettim basit bir problemmiş. MainActivity sınıfından ActivityTab sınıfına json dan gelen customer id yi göndertmemişim, meğer problem buymuş. Şuan Map dahil 3 tab da düzgünce çalışıyor.

(29 Ağu '14, 06:58) harunoguzorhan harunoguzorhan's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×818
×19

Soruldu: 28 Ağu '14, 04:41

Görüntüleme: 650 kez

Son güncelleme: 29 Ağu '14, 06:58

powered by BitNami OSQA