首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从主类(appCompatActivity)调用appCompatActivity

从主类(appCompatActivity)调用appCompatActivity
EN

Stack Overflow用户
提问于 2016-02-01 15:08:21
回答 3查看 1.1K关注 0票数 0

我有主类和多个片段类,但其中一个是从FragmentActivity扩展的,当我从一个类调用一个片段,这个类不是从FragmentActivity扩展,而是从片段扩展而来,它可以工作。如何在主类中调用从FragmentActivity扩展而来的从appCompacAtivity扩展的片段?

这是我的主要活动(Principal_eng.Java):的代码

代码语言:javascript
复制
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)

代码语言:javascript
复制
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)

代码语言:javascript
复制
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;
    }
}
EN

回答 3

Stack Overflow用户

发布于 2016-02-01 15:12:38

Frag1扩展了FragmentActivity,这不是一个Fragment;它被声明为一个活动。

票数 1
EN

Stack Overflow用户

发布于 2016-02-01 15:13:28

FragmentActivity是一个Activity,而不是一个Fragment,所以您要做的事情没有意义:尝试在Activity上执行片段事务。

为什么不像对待Fragment那样只使用子类Frag2

票数 1
EN

Stack Overflow用户

发布于 2016-02-01 15:16:07

您的问题是您的Frag2类是一个活动而不是一个片段。您应该让它扩展片段,而不是活动。不能将活动放入片段容器中。

如果您想从您的mainActivity类调用您的活动,请从您的主要活动中执行:

代码语言:javascript
复制
Intent intent = new Intent(this, Frag1.class);
startActivity(intent);

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35133854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档