我有主类和多个片段类,但其中一个是从FragmentActivity扩展的,当我从一个类调用一个片段,这个类不是从FragmentActivity扩展,而是从片段扩展而来,它可以工作。如何在主类中调用从FragmentActivity扩展而来的从appCompacAtivity扩展的片段?
这是我的主要活动(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;
}
}下面是片段1中的代码(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;
}
}片段2中的代码(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;
}
}发布于 2016-02-01 15:12:38
Frag1扩展了FragmentActivity,这不是一个Fragment;它被声明为一个活动。
发布于 2016-02-01 15:13:28
FragmentActivity是一个Activity,而不是一个Fragment,所以您要做的事情没有意义:尝试在Activity上执行片段事务。
为什么不像对待Fragment那样只使用子类Frag2
发布于 2016-02-01 15:16:07
您的问题是您的Frag2类是一个活动而不是一个片段。您应该让它扩展片段,而不是活动。不能将活动放入片段容器中。
如果您想从您的mainActivity类调用您的活动,请从您的主要活动中执行:
Intent intent = new Intent(this, Frag1.class);
startActivity(intent);祝好运!
https://stackoverflow.com/questions/35133854
复制相似问题