Soru & Cevap

Activity to Fragment Dönüşümü ? ...

14.07.2014 - 02:43

Selamlar;

Elimde var olan bir class'ı yeni uğraştığım projeye eklemek istiyorum. Fakat eski kodları (aşağıdakiler) Fragment yapısına getirmeye çalışıyorum. Bazı denemeler yaptım fakat başarıya ulaşamadım. Çözüm önerisi arıyorum. Teşekkür ederim.

[code]

public class CanvasActivity extends Activity
{
    FrameLayout layout;
    GridDesign myGrid;
    
    int oldItemType = 0;
    int requestedCode;    
    boolean useAdds = true;
    
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(1);
        
        Object localObject = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        layout = new FrameLayout(getApplicationContext());
        layout.setLayoutParams((ViewGroup.LayoutParams) localObject);
        
        myGrid = new GridDesign(getApplicationContext());
        localObject = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        myGrid.setLayoutParams((ViewGroup.LayoutParams) localObject);
        layout.addView(myGrid);
        
        localObject = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        ((FrameLayout.LayoutParams) localObject).gravity = 83;
        ((FrameLayout.LayoutParams) localObject).setMargins(10, 60, 10, 10);
        myGrid.setFocusable(true);
        myGrid.setFocusableInTouchMode(true);
        
        setContentView(layout);
    }

    protected void onActivityResult(int paramInt1, int paramInt2, Intent paramIntent)
    {
        super.onActivityResult(paramInt1, paramInt2, paramIntent);        
        try        
        {
            if ((paramInt1 == requestedCode) && (paramIntent.getData() != null))            
            {
                Intent localIntent = new Intent();
                localIntent.setAction("android.intent.action.SEND");
                localIntent.setType("image/jpeg");
                localIntent.putExtra("android.intent.extra.STREAM",    paramIntent.getData());
                startActivity(localIntent);                
            }            
        }        
        catch (Exception ex)        
        {
            ex.printStackTrace();            
        }        
    }

    public void onConfigurationChanged(Configuration paramConfiguration)
    {
        super.onConfigurationChanged(paramConfiguration);
    }

    public boolean onKeyDown(int paramInt, KeyEvent paramKeyEvent)
    {
        boolean bool;
        switch (paramInt)        
        {        
        case 82:            
            bool = super.onKeyDown(paramInt, paramKeyEvent);
            break;
        default:            
            bool = myGrid.onKeyDown(paramInt, paramKeyEvent);            
            break;            
        }        
        return bool;        
    }
    
    public void mStartActivity(Intent i)
    {
        startActivity(i);
    }

    public Context mGetContext() {
        return CanvasActivity.this;
    }
}

[/code]

18 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-23778-1401789696.jpg
serifsadi88
14.07.2014 - 03:54

[code]

// import android.app.Activity;

import android.app.Fragment;

...

// public class CustomFragment extends Activity

public class CustomFragment extends Fragment

...

// public void onCreate(Bundle savedInstanceState)

public void onStart()

...

// super.onCreate(savedInstanceState);
// requestWindowFeature(1);

super.onStart();
getActivity().requestWindowFeature(1);

...

// * * * EKLEDİM * * *

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return inflater.inflate(R.layout.fragment_custom, container, false);
    }

// * * *

...

// * * * SİLDİM * * * 

setContentView(layout);

// * * *

[/code]

 

vb. değişiklikler uyguladım internet araştırmalarım sonucu. Aynen bahsettiğiniz gibi methodların başlarına getActivity(). ekledim (örneğin; getActivity().getApplicationContext()). Fakat derlemede hata vermemesine rağmen, NavigationDrawer listesinde fragment'i seçince uygulama kapanıor.

Ahmet Burak Demirkoparan
14.07.2014 - 03:56
full traceyi koyabilir misin hatanın
Şerif Şadi Şenkule
15.07.2014 - 04:44
İlgin için teşekkür ederim. Vazgeçtim dönüştürmekten.
picture-1372-1408467635.jpg
ahmtbrk
14.07.2014 - 03:31

activity ile fragment farklı olgular.fragmentler activityler üzerinde koşarlar.herhangi bir fragmentte activity'e ait bir methodu kullanacağım zaman

getActivity().methodAdi şeklinde erişmen gerekir ve ayrıca fragmentlerinde yaşam döngüsü başkadır ona göre kodunu düzenlemen gerekiyor