Firebase已弃用此com.google.firebase:firebase-messaging:17.1.0版本中的一些消息传递调用.这篇文章很好地解决了这些变化.
问题:有人可以告诉我,如果不实施这是不好的做法onNewToken,而只是在每个应用程序启动时调用下面的块这对于Android人来说可能看起来过分,但从iOS的角度来看感觉就像家一样.
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener(this) { instanceIdResult ->
// Just use this call
val newToken = instanceIdResult.token
Log.i("newToken", newToken)
}
@Override
public void onNewToken(String s) {
super.onNewToken(s);
// Leave this unimplemented
}
Run Code Online (Sandbox Code Playgroud)
我更熟悉iOS,它onNewToken在每个应用程序发布时调用它.因此,对于iOS,我在那里放置逻辑以确定我的后端是否需要更新.
getInstanceId()文档说This generates an Instance ID if it does not exist yet, which starts periodically sending information to the Firebase backend.这让我想我可以调用FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener每次启动.
我主要使用iOS,已经习惯了非常流畅和流畅的屏幕更改动画.我现在正在开发一个Android应用程序,并且不能在我的生活中获得一个片段事务来顺利添加/替换片段.
我的设置如下:MainActivity有一个FrameLayoutxml,我立即加载FragmentA到它MainActivity的OnCreate.我的应用程序,然后进行更换MainActivity的FrameLayout有FragmentB,FragmentC,等.所以我的整个应用程序有1个活动.
在按钮单击时,我调用以下内容来添加/替换当前片段:
getFragmentManager()
.beginTransaction()
.setCustomAnimations(R.animator.slide_in, android.R.animator.fade_out, android.R.animator.fade_in, R.animator.slide_out)
.addToBackStack(null)
.add(R.id.fragment_1, fragment)
.commit();
Run Code Online (Sandbox Code Playgroud)
slide_in.xml看起来像(slide_out.xml显然是相反的):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:interpolator="@android:interpolator/linear"
android:propertyName="xFraction"
android:valueType="floatType"
android:valueFrom="1.0"
android:valueTo="0"
android:duration="@android:integer/config_shortAnimTime"
/>
</set>
Run Code Online (Sandbox Code Playgroud)
滑入和滑出我动画xFraction,我已经子类化LinearLayout了这样做:
public class SlidingLinearLayout extends LinearLayout {
private float yFraction = 0;
private float xFraction = 0;
public SlidingLinearLayout(Context context) {
super(context);
}
public SlidingLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
} …Run Code Online (Sandbox Code Playgroud) 为iOS 8更新了一些代码.我在iOS 7上运行了这个错误,这个应用程序在iOS 7中完美运行.我正在使用UIActionSheet来显示共享选项的选项,Facebook和Twitter正在给我带来帮助.
SLComposeViewController *facebookShare = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
//I add an image if there is one
//I set some initial text
[self presentViewController:facebookShare animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
相当直接的东西.但是在iOS 8上我得到了以下内容
警告:尝试在PostDetailViewController上显示SLComposeViewController:0x1a238760>:0x180c5200>已经呈现(null)
我在下面看到了这个错误,我得到了它的全部内容.然而它说我的PostDetailViewController已经呈现(null)?!?所以基本上它已经很忙了什么?
我试图从其他VC中提供SLComposeViewController,但是我一直在努力Attempt to present error.我尝试过来
UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController , and self.navigationController无济于事.我也试过从self.navigationController推送SLComposeViewController实际上有效,但是当它推空背景然后停留在那里直到SLComposeViewController关闭并且用户按下后会产生不希望的结果.
任何线索都会很棒!提前致谢.
编辑1:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0)[self shareWithTwitter];
if (buttonIndex == 1)[self shareWithFacebook];
if (buttonIndex == 2)[self shareWithiMessage];
if (buttonIndex == 3)[self shareWithEmail];
if (buttonIndex == 4)[self SaveImageToCameraRoll];
}
-(void)shareWithFacebook{
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) …Run Code Online (Sandbox Code Playgroud) 我已经创建了一个小信息视图,我想将其添加为UIVisualEffectView的子视图.在我的信息视图中,我创建了一个自由格式的xib,并为所有UILabel和一个UIButton使用了自动布局.这里的目标是Start,Pull和Sled都是可选的,所以如果那个数据不存在,我想要折叠那些UILabel.我通过将等高度约束更新为0 来完成此操作.
我的问题是,当这些可选的UIlabels中的部分或全部崩溃时,我想更新UIView框架的高度,以便整洁,不会有间隙.
我在下面做了更新我在IB中标记的约束.
for view in self.view.subviews {
for constraint in view.constraints {
if let identity = constraint.identifier {
if labelTags.contains(identity) {
print("Before: \(view.frame)")
constraint.constant = labelHeight
view.setNeedsUpdateConstraints()
print("After: \(view.frame)")
}
}
}
}
Before: (5.0, 101.0, 50.0, 25.0)
After: (5.0, 101.0, 50.0, 25.0)
Before: (58.0, 101.0, 101.0, 25.0)
After: (58.0, 101.0, 101.0, 25.0)
Before: (5.0, 129.0, 39.0, 25.0)
After: (5.0, 129.0, 39.0, 25.0)
Before: (47.0, 129.0, 23.0, 25.0)
After: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在上重叠SliverList几个像素SliverAppBar。类似于这个帖子。我希望其中的图片位于我的图片FlexibleSpaceBar下方SliverList。我正在尝试实现以下目标。
我只能这样获得半径。没有能力重叠SliverList他SliverAppBar。

@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
slivers: <Widget>[
SliverAppBar(
floating: false,
expandedHeight: MediaQuery.of(context).size.height * 0.50,
flexibleSpace: FlexibleSpaceBar(
background: Image.network(pet.photos.first)
),
),
SliverList(
delegate: SliverChildListDelegate([
Container(
height: 40,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(30),
topRight: Radius.circular(30),
),
),
),
]),
)
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
任何方向将不胜感激,谢谢!
我正在改写我的一个项目,将片段用于平板电脑.我还决定开始使用Android Studio进行转换.非常简单,但我遇到了一个关于设置自定义字体这个非常简单的任务的问题.
我开始与这些: 在Android中自定义字体和 文件列表的资产文件夹及其子文件夹,这对于Android的片段设置自定义字体
在Eclipse中,我的类扩展了Activity,我在OnCreate没有问题的情况下执行了以下操作.(有一个目录和文件"assets/FUT_R.ttf")
TextView tv=(TextView)findViewById(R.id.someTextView);
Typeface font = Typeface.createFromAsset(getAssets(), "FUT_R.ttf");
tv.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)
现在尝试将此Activity转换为ActionBarActivity(带有V7支持库的片段),我已将上述代码更改为此.(view带有一个Framelayout的手机充气布局在哪里)
TextView tv=(TextView) view.findViewById(R.id.someTextView);
Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "FUT_R.ttf");
tv.setTypeface(font);
Run Code Online (Sandbox Code Playgroud)
java.lang.RuntimeException: native typeface cannot be made即使我在我的新项目中创建了'assets'目录并在其根目录中使用了FUT_R.ttf,它也会在运行时崩溃.
要确认资产管理器,我尝试了以下代码:
String[] f = null;
try {
f = getActivity().getAssets().list("");
}
catch (IOException e){
e.printStackTrace();
}
for(String f1:f){
Log.i("names",f1);
}
Run Code Online (Sandbox Code Playgroud)
得到以下输出:
07-26 07:40:40.134 2114-2114/com.myapp I/names: images
07-26 07:40:40.134 2114-2114/com.myapp I/names: sounds
07-26 07:40:40.134 2114-2114/com.myapp I/names: webkit
Run Code Online (Sandbox Code Playgroud)
我很困惑,因为我的'assets'目录或项目中没有这些文件和/或目录.显然错误是系统找不到我的字体文件.我究竟做错了什么?任何方向都会受到高度赞赏,我在这个愚蠢的问题上浪费了太多时间.
谢谢!
我是Android和Java的新手,但在Objective C和iPhone编程方面有一些经验.我正在尝试重新创建一个我已经为iPhone设计的应用程序,并且我正陷入应该是一个简单的概念.
在我的ParserHandler类中,我正在从服务器解析XML并将数据放入三个单独的ArrayList中.解析似乎工作正常.当我在ParserHandler.java类中记录并遍历ArrayList时,一切正常.(List1.java类有一些字符串变量,我已经声明它像这样在ParserHandler: private List1 theList = new List1();)
for(int i = 0; i<dogArray.size(); i++){
theList = dogArray.get(i);
Log.i(TAG, "looping " + i + " " + theList.Name);
Log.i(TAG, "looping " + i + " " + theList.PhotoUrl);
Log.i(TAG, "looping " + i + " " + theList.Type);
}//this loops fine and has all the data
Run Code Online (Sandbox Code Playgroud)
dogArray声明如下:public ArrayList<List1> dogArray = new ArrayList<List1>();
现在我想从类DogListView.java访问dogArray,所以在onCreate方法中我尝试执行以下操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dog_list_view);
ParserHandler ph …Run Code Online (Sandbox Code Playgroud) android ×4
ios ×2
iphone ×2
arraylist ×1
autolayout ×1
firebase ×1
flutter ×1
fonts ×1
ios8 ×1
java ×1
objective-c ×1
performance ×1
uibutton ×1
uiview ×1