Android 从活动变为片段

Android 从活动变为片段,android,android-fragments,android-activity,android-actionbar,Android,Android Fragments,Android Activity,Android Actionbar,我正在尝试修复我的应用程序代码,并从活动转换到片段,以便转换到导航绘图,并最终有一些滑动选项卡 目前,对于导航,我使用的是动作栏上的3点下拉菜单,我知道这并不正确。这就是为什么我试图转换成碎片 我想保留我的操作栏菜单,这样我就可以在操作栏中保留我的搜索图标,但我想在其中添加导航绘图 我有一个名为ActionBarMenu的类,它扩展了活动。我所有的活动都来自这个类,因为这个类包含了为我现在设置的操作栏菜单打开新活动的所有函数 public class ActionbarMenu extends

我正在尝试修复我的应用程序代码,并从活动转换到片段,以便转换到导航绘图,并最终有一些滑动选项卡

目前,对于导航,我使用的是动作栏上的3点下拉菜单,我知道这并不正确。这就是为什么我试图转换成碎片

我想保留我的操作栏菜单,这样我就可以在操作栏中保留我的搜索图标,但我想在其中添加导航绘图

我有一个名为ActionBarMenu的类,它扩展了活动。我所有的活动都来自这个类,因为这个类包含了为我现在设置的操作栏菜单打开新活动的所有函数

public class ActionbarMenu extends Activity {

    public void goToSearch (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,Search.class);
        startActivity(i); 
    }

    public void goToStatistics (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,StatisticsPage.class);
        startActivity(i); 
    }

    public void goToFindBrewery (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,FindBrewery.class);
        startActivity(i);
    }

    public void goToContact (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,ContactPage.class);
        startActivity(i);
    }

    public void goToPortfolio (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,Portfolio.class);
        startActivity(i);
    }

    public void goToDiscover (MenuItem item) {
        // go to search page
        Intent i = new Intent(this,Discover.class);
        startActivity(i);
    }

    public void scanBarcode (MenuItem item) {
        //open scanner
        IntentIntegrator scanIntegrator = new IntentIntegrator(this);
        scanIntegrator.initiateScan();
    }

    //get result value
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {

        // retrieve scan result
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanningResult != null) {
            // we have a result
            String scanContent = scanningResult.getContents();
            // launch async task for results
            String url = "http://api.brewerydb.com/v2/search/upc?code=" + scanContent + "&key=0cdb22f84315834cc807c0176a927060&format=json&withBreweries=y";

            new GetBeerDataFromUPCJSON(this).execute(url);
        } else {
            Toast toast = Toast.makeText(getApplicationContext(), "No scan data received!", Toast.LENGTH_SHORT);
            toast.show();
        }
    }
}

我试图通过将extends活动更改为extends片段来将其更改为一个片段,并且我为启动新活动而构建的所有意图都得到了红色的扭曲下划线。我只是在尝试,试图了解正在发生什么,以及什么是将我的应用程序从活动转换为片段的最佳方式,而不必重新编码所有内容

您的问题可能是因为

Intent i = new Intent(this, Discover.class);
现在指的是
片段
,而不是
活动
Intent()
需要一个
上下文作为第一个参数<代码>活动
扩展了
上下文
,但
片段
没有扩展。要解决您的问题,您应该将
this
更改为
getActivity()


作为将来的参考,将鼠标悬停在错误旁边的红色小x上,应该可以准确地告诉您问题所在。

您将使用片段管理器加载新片段,而不是使用意图。阅读android网站上关于碎片的页面。

快速替换的完成代码是:

Intent i = new Intent(getActivity(), Discover.class);
startActivity(i);

Intent i=新的Intent(这个,Discover.class)

如果活动是片段的下一个,则只需将其设置为与backpressed相同,如。。。它应该有用

        @Override
        public void onClick(View view) {

     onBackPressed();

        }

因此,我需要将所有这些活动转换为frgaments,然后将不同的片段充气。但我想我最终会摆脱这些,因为我将使用导航抽屉代替。我现在只是想了解所有这些东西是如何工作的。是的,你可能会有一个主要的活动来承载所有的片段。在活动中实现导航抽屉。启动一个新项目可能比修改当前项目更容易。如果我在android studio中启动一个新项目,如果我想将其上载到play store,我需要保持包名不变,对吗?是的,没错,但如果同时需要不同的包名,您可以随时重构包名。