这个问题非常类似于我想要做的事情:如何用Robolectric来影响PackageManager
但是,所有答案都依赖于ShadowApplication.setPackageManager().在2.2中,这种方法似乎不再存在:http://robolectric.org/javadoc/org/robolectric/shadows/ShadowApplication.html
我试图抓住包管理器并添加解析信息:
RobolectricPackageManager packageManager = (RobolectricPackageManager) Robolectric.application.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN,null);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo ri = new ResolveInfo();
ActivityInfo ai = new ActivityInfo();
ai.packageName = "com.fun.test";
ri.activityInfo = ai;
ri.isDefault = true;
packageManager.addResolveInfoForIntent(intent, ri);
Run Code Online (Sandbox Code Playgroud)
但无济于事.有谁知道如何做到这一点?
我正在使用我在这里找到的代码.
public class ActionBarTabs extends SherlockFragmentActivity {
CustomViewPager mViewPager;
TabsAdapter mTabsAdapter;
TextView tabCenter;
TextView tabText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
mViewPager = new CustomViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("Home"),
ToolKitFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("FujiSan"),
FujiFragment.class, null);
}
public static class TabsAdapter extends FragmentPagerAdapter implements
ActionBar.TabListener, ViewPager.OnPageChangeListener {
private final Context mContext;
private final ActionBar mActionBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-viewpager actionbarsherlock
我正在尝试将此框架添加到项目中.我按照这些指示写了这封信:
我确定只打开了一个xcode实例,然后将SocketRocket.xcodeproj文件拖到我的项目中.我将.framework文件添加到链接库,创建了一个复制文件构建阶段,然后将.framework添加到复制文件构建阶段.
这是我尝试构建时遇到的错误:
clang:错误:没有这样的文件或目录:'/ Users/adamhickey/Library/Developer/Xcode/DerivedData/websockettest -fcuhfltporfkitgubwcjukxogzas/Build/Products/Debug-iphonesimulator/SocketRocket/SocketRocket'
这是非常正确的:该目录不存在.
在构建阶段,SocketRocket.framework在Link Binary With Libraries下是红色的.它在SocketRocket子项目的products文件夹中也是红色的.
我一直在谷歌搜索这个错误几个小时,我尝试过的大多数事情都指向我改变Xcode-> preferences-locations中的构建位置.我试过了:
如果我在一个单独的xcode实例中打开SocketRocket.xcodeproj并尝试构建它,那么这四个产品中有3个是红色的.产品包括:libSocketRocket.a,SRWebSocketTests.octest,TestChat.app和SocketRocket.framework.第一个是白色,而后三个是红色.
我假设如果我可以在单独的项目中构建.framework文件,这将解决我的整体问题.但是,我所做的一切似乎都没有任何效果.
请帮忙!我正在使用xcode 4.6.
对于viewpager的例子,在这里,包含线路:
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
Run Code Online (Sandbox Code Playgroud)
我不明白R.id.pager是如何定义的.我应该在某个地方用xml创建一个viewpager吗?但这没有意义,因为它在前一行中实例化了一个viewpager.如果有人能为我清除这一点,我将非常感激!
谢谢!!
编辑
显然将线路更改为:
mViewPager.setId(1);
Run Code Online (Sandbox Code Playgroud)
使它工作:) :)
android ×3
frameworks ×1
ios ×1
robolectric ×1
socketrocket ×1
unit-testing ×1
xcode ×1
xcode4 ×1