2016-02-01 99 views
0

我有主類和更多的2片段類,但其中之一是從FragmentActivity擴展,當我從一個類不是從FragmentActivity擴展,而是從片段擴展, 有用。我怎麼能調用從appCompacAtivity擴展的主類中的FragmentActivity擴展的片段?從主類調用FragmentActivity(appCompatActivity)

這裏是主要的活動我的代碼(Principal_eng.Java):

import android.app.FragmentManager; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.EditText; 
import android.widget.TextView; 
public class Principal_eng extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.principal_eng); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     /* 
     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
     */ 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

    } 
    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     FragmentManager fr = getFragmentManager(); 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.ceramicas) { 
      fr.beginTransaction() 
        .replace(R.id.content_main, new Frag1())//Here i get an error 
        .commit(); 
     } else if (id == R.id.tijolos) { 
      fr.beginTransaction() 
        .replace(R.id.content_main, new Frag2()) 
        .commit(); 
     } else if (id == R.id.ohms) { 

     } else if (id == R.id.nav_send) { 

     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 
} 

下面是一個片段(Frag1.Java

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class Frag1 extends FragmentActivity { 
    public View onCreateView(LayoutInflater inf, ViewGroup cont, Bundle savedInst) { 
     View v = inf.inflate(R.layout.frag1, cont, false); 
     return v; 
    } 
} 

代碼從片段代碼兩個(Frag2.Java

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class Frag2 extends Fragment{ 
    public View onCreateView(LayoutInflater inf,ViewGroup cont, Bundle savedInst){ 
     View v = inf.inflate(R.layout.frag2,cont,false); 
     return v; 
    } 
} 
+0

FragmentActivity不是片段。是一項活動。 – Blackbelt

+0

但我想知道如何從主類調用FragmentActivity,這可能嗎? – Fantoche

回答

1

Frag1延伸FragmentActivity而那不是Fragment;它被聲明爲一個Activity。

+0

但我想知道如何從主類調用FragmentActivity,這可能嗎? – Fantoche

+0

使用意圖啓動新的活動 - 而不是片段交易。活動使用Intents開始。 – blackpanther

+0

我一直試圖使用意圖,但不起作用 – Fantoche

1

A FragmentActivityActivity而不是Fragment所以你試圖做的沒有意義:嘗試在Activity上執行片段事務。

爲什麼不只是子類Fragment像你已經完成Frag2

+0

因爲我想從Frag1調用另一個片段,我已經看到它需要是一個片段活動來實現按鈕上的監聽器 – Fantoche

0

你的問題是你的Frag2類是一個活動,而不是片段。你應該讓它擴展Fragment而不是一個活動。你不能在一個片段容器中放置一個活動。

如果你想從你的MainActivity類別打電話給你的活動從您的主要活動做:

Intent intent = new Intent(this, Frag1.class); 
startActivity(intent); 

祝你好運!

+0

我試過了這個編譯器並且沒有工作 – Fantoche

+0

試圖讓你的frag1類存在活動而不是FragmentActivity – Howy

+0

但我使用抽屜,我需要使用FragmentActivity來使用偵聽器 – Fantoche