我有一个引起冲突的奇怪问题.我不得不切换到原Fragments生来修复它,但有一些错误.
我原来的问题:我有一个导航抽屉设置v4 Fragments.要在我的一个片段中请求许可我打电话ActivityCompat.requestPermissions(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, 1);提示显示正常,但是当我接受或拒绝许可时,没有任何反应.onRequestPermissionsResult()永远不会调用回调.相反,它会在我的片段附加到的Activity中调用.对我来说没用,我需要回调才能在Fragment中工作.
考虑到这一点,我被告知我需要使用FragmentCompat,但这只能使用native Fragments (v13+),所以我改变了导航抽屉,使用原生Fragments而不是v4支持库Fragments.但是,因为我正在使用AppCompatActivity,所以某些东西不起作用,比如addToBackStack()回到之前的片段.
长话短说,有谁知道我怎么可以使用v4.Fragment并仍然要求获得许可Fragment并获得回调Fragment?我觉得这是Android中的一个错误,但尚未解决,但我不是100%.
让我知道如果你需要查看我的代码,它只是运行时权限所需的标准方法,我想使用v4 Fragments,虽然这不符合我的理解.
我正在使用内置的导航抽屉来运行我的应用程序.我无法弄清楚如何处理后退按钮.当它被按下时,我希望它再次加载第一个片段.片段1.
因此,当应用程序启动时,您会看到Fragment1已启动.然后,他们可以点击片段2-5转到其他页面.在所有这些页面中,我希望使用后退按钮将用户带回Fragment1.用户应该能够通过后退按钮退出应用程序的唯一位置是Fragment1.
所有这些都是由FragmentActivity处理的,我试着弄乱那里的后门按钮.然而,我一直收到一个强制关闭错误:
(01-11 14:09:33.114: E/AndroidRuntime(8292): android.view.InflateException: Binary XML file line #7: Error inflating class fragment)
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止:
我确保将片段添加到后台堆栈中,如下所示:
fm.beginTransaction().replace(R.id.main, newFragment).addToBackStack("fragBack").commit();
Run Code Online (Sandbox Code Playgroud)
返回键:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().findFragmentByTag("fragBack") != null) {
}
else {
super.onBackPressed();
return;
}
if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_LONG).show();
Fragment frag = getSupportFragmentManager().findFragmentByTag("fragBack");
FragmentTransaction transac = getSupportFragmentManager().beginTransaction().remove(frag);
transac.commit();
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我需要做什么?我是否需要在每个片段中调用onBackPressed(如果可能的话),而不是控制抽屉的FragmentActivity?在我过去的应用程序中,无论用户使用哪个片段,我都可以使用后退按钮关闭应用程序但是我现在正在制作的那个片段我希望后退按钮返回到Fragment1.
非常感谢一些帮助,谢谢.
onItemClick
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Fragment newFragment = new MapsPage();
FragmentManager fm = getSupportFragmentManager(); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-fragmentactivity navigation-drawer
希望这里有一个解决方案,我在main.xml中有一个XML TimePicker和ScrollView,并且设置时TimePicker不会滚动.如果我删除ScrollView,Timepicker会滚动得很好,但显然我需要两者.
看起来他们都在争取触摸事件,但这会引发问题.
这是我的代码:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@color/backgroundmain">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Action Title -->
<ImageView />
<TextView />
<!-- Description -->
<TextView />
<!-- Have to Button -->
<TextView />
<RelativeLayout
android:id="@+id/TimePickerSection"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="5dp"
android:layout_centerHorizontal="true"
android:layout_below="@id/">
<TimePicker
android:id="@+id/TimePick"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerVertical="true"
android:layout_below="@id/HaveToText"/>
<Button
android:id="@+id/OkButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/OkText"
android:layout_below="@id/HaveToText"
android:textSize="20sp"
android:onClick="TimePickButton"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/TimePick"/>
</RelativeLayout>
<!-- OR -->
<TextView />
<!-- buttons -->
<TextView />
<Button />
</RelativeLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
我删除了不相关的代码,但保留大纲只是为了向您展示布局的布局.
XML中是否有修复?我尝试了类似android:fillViewPort=""但没有做任何事情的事情.我的TimePicker不是Dialog或其他任何东西的一部分,希望我能保持这种方式.
我正在尝试使用Parallax并获得一些奇怪的错误,想知道是否有人可以添加一些输入.我见过的唯一一个有效实现视差的应用程序是soundcloud.它非常微妙,但每个项目都有一个图像背景,滚动时它具有视差效果.
我已经创建了一个自定义的RecyclerView来处理这个问题,这是我到目前为止所做的:
public class ParallaxScrollListener extends RecyclerView.OnScrollListener {
private float scrollSpeed = 0.5f;
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
int firstVisible = layoutManager.findFirstVisibleItemPosition();
int visibleCount = Math.abs(firstVisible - layoutManager.findLastVisibleItemPosition());
Matrix imageMatrix;
float tempSpeed = -100;
if (dy > 0) {
tempSpeed = scrollSpeed;
} else if (dy < 0) {
tempSpeed = -scrollSpeed;
}
for (int i = firstVisible; i < (firstVisible + visibleCount); i++) {
ImageView imageView …Run Code Online (Sandbox Code Playgroud) 抱歉,如果这最终变得冗长。
就像服务器一样,您可以在其中保存数据,并且用户可以使用正确的代码访问它。我可以将我的文本文件放在 Google 云端硬盘上,将其公开,然后允许我的应用程序访问它们吗?
我已经使用我创建的本地网络服务器完成了此操作。AsyncTask与服务器上的 .php 文件交互,php 文件从 mySQL 数据库调用数据。这当然可行,但由于我无力支付服务器费用,是否可以选择将我的数据放入文本文件并将其托管在 Google 云端硬盘上?那么就用AsyncTask来调用它们吧?我在尝试时遇到错误。我开始认为这是不可能的。
本质上,我有什么办法可以使用 Google Drive 作为服务器吗?如果我无法使用,有人知道还有其他可靠的免费网站吗?我知道我的 AyncTask 代码可以工作,因为当我使用 XAMPP 在旧笔记本电脑上创建本地服务器时,我能够托管一个 mySQL 数据库和 .php 文件,其工作方式如上所述。
我的应用程序目前处于离线状态,只是我想要更改,因此我不必每周通过 Play 商店向用户发送应用程序更新。有什么建议吗?
感谢您的帮助,我知道这严格来说与代码无关,或者如果可以使用 Google Drive,也许可能是这样。
这是我的应用程序,以便您可以了解我正在使用的数据以及我想如何显示它: https: //play.google.com/store/apps/details ?id=com.history.f1historyfree
android google-docs google-docs-api android-asynctask google-drive-api
我已经在我的应用上运行了Google Maps v2,使用服务获取用户位置.问题是位置不断变化.它显示了我的真实位置,然后跳转到我以前从未去过的随机位置.
我通过服务检查GPS /网络lat/lng并在我的地图类中调用它们,然后我在那里设置相机动画以移动到我的位置.我真的不知道什么是错的,或者从哪里开始.
有谁知道这是什么问题?这让我感到困惑.
我真的不知道要发布什么代码.通过网络的位置的准确性是1121m,其中通过GPS的位置的准确度是大约31.我正在使用a LocationListener并且在onLocationChanged说它正在使用我的网络位置,突然精度提高到29m,然后它突然变为回到1121米.这种情况大约每分钟左右发生一次.非常奇怪的行为.启用GPS后,不应该是首选的选择吗?一旦得到修复,有没有办法将其设置为我的首选?
我的服务得到了这样的信息:
public Location getLocation() {
Log.i("getLocation", "Get location called");
try {
locationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);
//Getting GPS status
isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//Getting network status
isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled and GPS is off.
Log.d("NOT ENABLED", "PASSIVE PROVIDER");
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
if (loc != null) {
latitude = loc.getLatitude();
longitude = loc.getLongitude();
Log.i("PASSIVE_LOCATION", "Location: "+loc.toString());
}
} …Run Code Online (Sandbox Code Playgroud) 我猜这是travis-ci支持吗?我是从他们的网站发送来的。我想我应该在这里问这个问题。
因此,我将Google Analytics(分析)添加到了我的应用中,为此,我必须将其插件的gradle更新到2.10版。完成后,所有travis-ci都会运行我的构建,但是在每个构建上都会出现以下错误:
com.android.builder.testing.ConnectedDevice > No tests found.[test(AVD) - 5.0.2] FAILED
Run Code Online (Sandbox Code Playgroud)
当我使用gradle2.2.1.-all时,这不是问题。
要更新我改变了distributionUrl在gradle/wrapper/gradle-wrapper.properties
有人知道解决办法吗?我所有其他分支都很好,我没有进行此更改。
作为参考,这里是我的travis.yml,我没有对其进行任何更改,只是更新了gradle。
language: android
jdk: oraclejdk7
android:
components:
- platform-tools
- tools
- build-tools-23.0.2
- android-23
- sys-img-armeabi-v7a-android-21
- extra-android-support
- extra-android-m2repository
- extra-google-m2repository
- extra-gooogle-google_play_services
env:
global:
- ADB_INSTALL_TIMEOUT=8
- MALLOC_ARENA_MAX=2
sudo: false
cache:
directories:
- $HOME/.gradle/caches/2.8
- $HOME/.gradle/caches/jars-1
- $HOME/.gradle/daemon
- $HOME/.gradle/native
- $HOME/.gradle/wrapper
before_install:
- export ANDROID_HOME=/usr/local/android-sdk
- export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
- echo "sdk.dir=$ANDROID_HOME" > local.properties
notifications:
slack: caketechnologies:pnmNEHM1ZxudlMZNTv6oVgcT
install:
- TERM=dumb …Run Code Online (Sandbox Code Playgroud) 所以是的,通过使用广告:testDevices =""我添加了一些我的测试设备,看看我的Admob广告是否有效.现在我已完成所有测试,我想发布我的应用程序.
是否必须从我的XML布局中删除该行代码?我的意思是它真的只能影响这些设备吗?
我可以继续发布应用程序吗?保持测试线?
快速问题我知道,我只是想确定,因为我有很多布局,什么是小问题可能是很多工作.
离开ids基本上有什么缺点吗?
在我的应用程序中,用户可以通过 Facebook SDK 登录。该应用程序请求读取和发布权限。有没有办法在继续之前检查他们是否接受了发布权限?权限是"publish_actions"。我尝试这样做,Session.getPermissions();但那里只列出了读取权限(basic_info, user_birthday, user_friends)。
似乎无法检查用户是否接受了我的发布权限,是否有可能的解决方法?
我需要检查这一点的原因是因为用户可以随时从他们的个人资料中撤消权限,所以我不能让他们登录然后撤消权限,否则会破坏要求它的目的。
真的很感激一些帮助,谢谢。希望这是可能的,而不是 Facebook 的限制(尽管我可以理解为什么会这样)。
有没有办法改变小部件中的字体?我在这里看到了一些问题/答案,但有些人说它无法完成.其他人说可以这样做,但不提供太多信息.我说的是我放在资源文件夹中的自定义字体.我想要使用的字体是设计指南中的Roboto.
我主要想问,因为其他问题说明不可能.我的Nexus 7上有Google Currents小部件,它在小部件上使用Roboto字体,所以肯定有可能吗?
我想改变的TextView很好,只是一个textview.目前它没有格式/样式.我唯一需要的是将字体改为Roboto light.
我很感激有关如何做到这一点的一些建议.谢谢.
我实际上计划开源我在这里制作的小部件,所以它也可以帮助其他人.
android ×10
java ×3
admob ×1
android-xml ×1
animation ×1
facebook ×1
fonts ×1
google-docs ×1
google-maps ×1
gps ×1
location ×1
parallax ×1
permissions ×1
soundcloud ×1
travis-ci ×1
widget ×1