尝试编译我的应用程序时出现以下错误:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':myProject'.
> Could not resolve all files for configuration ':myProject:classpath'.
> Could not find org.jetbrains.trove4j:trove4j:20160824.
Searched in the following locations:
https://repo1.maven.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
https://repo1.maven.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.jar
https://maven.fabric.io/public/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
https://maven.fabric.io/public/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.jar
https://maven.google.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
https://maven.google.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.jar
Required by:
project :metam > com.android.tools.build:gradle:3.0.0-beta2 > com.android.tools.build:gradle-core:3.0.0-beta2 >
com.android.tools.lint:lint:26.0.0-beta2 > com.android.tools.lint:lint-checks:26.0.0-beta2 > com.android.tools.lint:lint-
api:26.0.0-beta2 > com.android.tools.external.com-intellij:intellij-core:26.0.0-beta2
Run Code Online (Sandbox Code Playgroud)
它似乎缺少IDE所需的库?
我正在使用Actionbar和它的"向上"按钮从详细活动返回到主要活动,这很好.类似地,用户可以按下系统"后退"按钮返回主活动.
在我的主要活动中,onCreate()
数据从互联网下载,以便在应用程序启动时显示.我注意到当我使用Actionbar"向上"按钮从详细信息转到主要活动时,onCreate()
运行,重新下载数据.但是onCreate()
当我使用系统"后退"按钮时不运行,因此立即显示主要活动视图.
我在详细活动中用来实现"向上"按钮的代码是:
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
Run Code Online (Sandbox Code Playgroud)
我希望"向上"按钮的行为类似于"后退"按钮,而不是重新运行onCreate()
.但我不确定如何实现这一点,或者"后退"按钮实现返回主活动的代码路径.
谢谢!
我更新到SDK 23并将gradle.build更新为API 23,支持库到23.0.0等,现在我在尝试运行应用程序时遇到以下错误(编译得很好).
java.lang.NoSuchFieldError: No instance field mFragments of type Landroid/support/v4/app/FragmentManagerImpl; in class Landroid/support/v4/app/Watson; or its superclasses (declaration of 'android.support.v4.app.Watson' appears in /data/app/com.my.app-1/base.apk)
at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:50)
at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:560)
at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:64)
at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:164)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:548)
at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:917)
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:258)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)
我恢复了所有内容的API 22,仍然得到错误.
我使用RecyclerView显示具有列表布局的项目列表.我从列表布局切换到网格布局,在网格布局中仅显示所有数据的子集.此开关使用与列表布局呈现时不同的布局XML.
所有这一切都很好,除了当我滚动,回收(缓存?)列表布局视图填充网格,与适当的网格布局视图项混合.换句话说,我不是layout_grid.xml
在RecyclerView 中使用my 为每个项目的layout_list.xml
布局,而是使用布局获取项目,但是采用网格格式.
这告诉我LayoutManager工作正常,从列表切换到网格布局.但并非所有项目视图项都使用网格xml布局重新创建,而是使用回收列表布局视图.
我试过RecyclerView.removeAllViews()
,RecyclerView.removeAllViewInLayout()
,RecyclerView.swapAdapter()
(强制适配器重装),都无济于事.
更新:
如果我在列表中向下滚动两个位置,然后从列表切换到网格,前两个位置不会通过onCreateViewHolder(),而是直接到onBindViewHolder(),因此不会强制使用网格布局xml.相反,前两个位置项目被回收(我认为)并以列表布局格式显示.
我正在使用这个例子使用FragmentStatePagerAdapter .
MyAdapter类实现如下:
public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return ArrayListFragment.newInstance(position);
}
}
Run Code Online (Sandbox Code Playgroud)
ListFragment类包含以下创建新实例的方法:
/**
* Create a new instance of CountingFragment, providing "num"
* as an argument.
*/
static ArrayListFragment newInstance(int num) {
ArrayListFragment f = new ArrayListFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
} …
Run Code Online (Sandbox Code Playgroud) 我有一个我想查询的SQLite数据库.我想通过ICS定位Android 2.2.我遇到了关于如何执行此操作的文章,但它使用了弃用的代码(不是异步查询,而是在UI线程上).我已经阅读过,我可以使用CursorLoader
它LoaderManager
来执行此任务的首选,最佳实践方式(以免陷入UI线程).
问题是找到一个简洁的例子向我解释如何做到这一点.1)加载数据库,2)查询它,3)使用结果填充AutoCompletetextBox列表视图.
这样的例子存在吗?
我正在尝试复制Google地图的底部面板向上滑动动画:
使用时TranslationAnimation
,我已经能够使用底部面板在点击标记时进行动画制作.我遇到的问题是,在动画结束时,我必须将其View设置为VISIBLE
以便面板显示,但是然后完整的面板显示而不仅仅是顶部标题部分.
我目前正在使用包含LinearLayout的FrameLayout作为我的底部面板视图:
<FrameLayout
android:id="@+id/viewBottomPane"
android:layout_width="match_parent"
android:visibility="gone"
android:background="#000000"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/paneHeader"
layout="@layout/headerPanel" />
<TextView
android:id="@+id/paneFooter"
android:text=""
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我想paneHeader
在地图标记点击上显示,然后向上滑动以显示完整viewBottomPane
,向下滑动以显示paneHeader
并点按标记以隐藏所有内容.
我正在尝试在我的应用中使用PagerAdapter实现ViewPager.我主要是在研究这个例子.
我PagerAdapter
被称为DataPagerAdapter并使用以下构造函数,并instantiateItem
在其中向我提供视图data_list_view.xml
:
public class DataPagerAdapter extends PagerAdapter
implements TitleProvider {
private LayoutInflater mInflater;
private static String[] titles = new String[]
{
"Page 1",
"Page 2",
"Page 3"
};
private final Context context;
public DataPagerAdapter( Context context )
{
this.context = context;
}
@Override
public String getTitle( int position )
{
return titles[ position ];
}
@Override
public int getCount()
{
return titles.length;
}
@Override
public Object instantiateItem( View pager, int position ) …
Run Code Online (Sandbox Code Playgroud) 我使用的是Viewpager
同一个的FragmentPagerAdapter
,以允许添加和移除网页.每页显示从互联网获得的数据.
添加新页面时,会将新片段与该页面关联.数据通过AsyncTask获得并显示在Fragment中.当用户选择删除页面时,想法是销毁页面和相关的片段.
总的来说,这一切都运作良好.我看到的问题如下:
你有三个数据页面:
[第1页] [第2页] [第3页]
你删除了最后一页以外的任何页面,比如第2页; 第2页按需要消失:
[第1页] [第3页]
你添加一个新页面; 但是新页面不是空白的新页面,而是显示第3页的数据(视图).
[第1页] [第3页] [第4页,但显示第3页的视图/数据,应为空白]
我的活动中的页面删除代码如下:
// Destroy fragment for this page
DataListFragment curFrag = getFragmentByName(currentPage);
FragmentManager fm = getSupportFragmentManager();
fm.beginTransaction().remove(curFrag).commit();
fm.executePendingTransactions();
curFrag = null;
// Remove page and update adapter
mPageTitles.remove(position);
mAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
使用调试器,它显示片段FragmentManager
在executePendingTransactions()
调用后被删除.但是在FrampePagerAdapters
调用中,mAdapter.notifyDataSetChanged()
片段会重新添加,然后在创建新页面时显示.
我尝试使用FrameStatePagerAdapter,因为它应该允许销毁片段,但它不起作用.在我的FragmentPagerAdapter的getItemPosition()
方法中,我使用return FragmentAdapter.POSITION_NONE;
了我遇到的另一篇SO文章.
似乎该页面的视图未被销毁,但随后又被添加回新页面.我尝试removeViewAt()
在新页面的视图上使用该方法,但这不起作用.
对此我不熟悉,我确信我错过了一些明显的东西......