我正在尝试修复我的应用代码并从“活动”转换为“碎片”,以便转换到导航绘图并最终获得一些滑动选项卡。
目前用于导航我正在使用操作栏中的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();
}
}
}
我尝试通过将扩展活动更改为扩展Fragment来将其更改为片段,并且我为了启动新活动而构建的所有意图都获得了红色波浪线下划线。我只是在尝试并尝试了解正在发生的事情,并且了解将应用程序从活动转移到Fragments的最佳方式,而无需重新编码所有内容。
答案 0 :(得分:2)
你的问题可能是因为像
这样的行Intent i = new Intent(this, Discover.class);
this
现在指的是Fragment
而不是Activity
。 Intent()
期望Context
作为第一个参数; Activity
延伸Context
,但Fragment
没有。要解决您的问题,您应该将this
更改为getActivity()
。
为了将来参考,将鼠标放在错误旁边出现的小红色x上,应该可以准确地告诉您问题所在。
答案 1 :(得分:0)
您将使用片段管理器加载新片段,而不是使用意图。阅读android网站上有关片段的this页面。
答案 2 :(得分:0)
快速更换的完成代码为:
Intent i = new Intent(getActivity(), Discover.class);
startActivity(i);
答案 3 :(得分:0)
如果活动就在您的片段旁边,那么您只需要像背景一样使它变得相同......它应该工作....
@Override
public void onClick(View view) {
onBackPressed();
}
答案 4 :(得分:-2)
Intent i = new Intent(this, Discover.class);