我们中的许多人都会经历类似的问题,但即使经过以下大多数相关链接引用link1和参考link2,我也无法解决.
问题:
创建一个自定义插件(Cordova)以便在ionic2项目中使用它.
期望:此插件将能够与IOS和Android的本机功能进行交互.确切地说,我正在尝试使用cordova访问Ionic项目的本机SDK(Aruba内部定位SDK)的功能.
步骤1根据参考链接1初始创建插件
第2步创建Ionic 2项目(使用此基本步骤创建)
步骤3插件中的JavaScript文件无法在Ionic2中引用和访问.
谷歌搜索后,我发现了这个讨论,由于以下原因,它被告知在插件中创建界面.
从'../../../plugins/xxx/*.js'导入{myPluginName}
因为插件不是离子本机包的一部分而无法工作.
如果你有自定义插件,你可以做一些事情.
1)制作PR以将其添加到离子原生物中
2)使用原始插件API.您可以使用原始插件API,而不必将其作为Ionic Native的一部分.该插件位于窗口对象上,因此您可以正常定位api
window.plugin.myPlugin.myMethod()
根据GITHUB Example项目,这种方式应该实现接口
interface CordovaPlugins {
ZPLPrinter: ZPLPrinter;
}
interface ZPLPrinter {
print(
ipaddress: string,
bclabels: any,
printSuccess: (ip: string, labels: string[]) => void,
printError: (message: string) => void): void;
}
Run Code Online (Sandbox Code Playgroud)
现在我在我的插件中创建了一个类似的界面,插件的www文件夹中有以下内容
interface CordovaPlugins {
Communicator: Communicator;
}
interface Communicator {
getInfo(successCallback: any, errorCallback: any);
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,此接口将在JS文件中定位此方法
Device.prototype.getInfo = …Run Code Online (Sandbox Code Playgroud) 我在Android中运行Web应用程序.我可以缓存我的网页,所以如果用户没有网络连接,他仍然可以从缓存访问网页.但它仅在用户没有Internet连接时运行.
现在,为了优化我的应用程序,当用户有互联网连接时,我想要缓存所有显示的图像WebView并将其存储在本地/缓存它,当用户打开一个具有相同src图像的页面时,我已经缓存它,它从本地加载,不要再从网上加载它.或者可能不是图像,而是html访问缓存它的页面,当用户再次返回到url页面时,Webview从本地加载,而不是从Internet加载.
我已经搜索了两天的代码,但仍然找不到解决方案.
感谢帮助.
我是Swift的新手.我正在尝试在我的班级中使用方法签名:
func UISaveVideoAtPathToSavedPhotosAlbum(_ videoPath: String!,
_ completionTarget: AnyObject!,
_ completionSelector: Selector,
_ contextInfo: CMutableVoidPointer)
Run Code Online (Sandbox Code Playgroud)
最后一个参数contextInfo是obj-c中的void*.
如果我在Swift中传递字典,我会得到一个NSDictionary不是CMutableVoidPointer错误的子类型.非常感谢任何帮助.我不知道如何void在Swift中传递*等效参数而不会出现该错误.
我想做什么
Service以便只要应用程序正在运行Location即可我面临的问题
Latitude,Longitude也会以不同的Accuracy级别变化Location,GoogleMap它也会因我的缩放级别而跳到非常近的位置18.0fmGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLon, 18.0f));我已经尝试了stackoverflow链接一和stackoverflow链接二中 提到的方法,
但是即使我坐在相同的位置并以固定间隔检索位置,纬度和经度也不同,请参见每个纬度结尾处的突出显示的值:
纬度:12.8379 283长:经度:77.6647 266
纬度:12.8379 233长:经度:77.6647 368
纬度:12.8379 285经度:经度:77.6647 506
纬度:12.8379 245长:经度:77.6647 546
但仍然每次Accuracy有所不同,Lat Lon都会稍有变化。
因为我的代码试用版与链接的中提到的完全相同,所以我不仅在这里复制粘贴。如何解决
我有一个主要用Java编写的项目,但是我正在慢慢转移到Kotlin从事新活动。该项目应用了Dagger2,并且与基于Java的活动一起使用时,可以完美地工作。但是,当我创建Kotlin活动并尝试注入时,出现以下错误。
LoginIDPresenter没有@Inject构造函数或通过@Provides-或-带@Produces注释的方法不能提供。此类型支持成员注入,但不能隐式提供。
void inject(LoginIDActivity loginIDActivity);
com.maxis.mymaxis.ui.logindigitalid.LoginIDPresenter is injected at
com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity.loginIDPresenter
com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity is injected at
com.maxis.mymaxis.injection.component.ActivityComponent.inject(loginIDActivity)
Run Code Online (Sandbox Code Playgroud)
再次重申一下,当我在Java活动中进行注入时,它可以完美地工作。另外,我的Module和Component文件全部使用Java。仅当我创建Kotlin活动并尝试在其中进行注入时,我才会收到错误。
LoginIDPresenter.kt
class LoginIDPresenter : BasePresenter<LoginIDMvpView>() {
lateinit var mContext : Context
@Inject
fun LoginIDPresenter(@ActivityContext context: Context){
mContext = context
}
override fun attachView(loginIDMvpView: LoginIDMvpView) {
super.attachView(loginIDMvpView)
}
override fun detachView() {
super.detachView()
mCompositeSubscription.clear()
}
}
Run Code Online (Sandbox Code Playgroud)
LoginIDActivity.kt
class LoginIDActivity : BaseActivity(), LoginIDMvpView {
@Inject lateinit var loginIDPresenter : LoginIDPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
loginIDPresenter.attachView(this)
}
override …Run Code Online (Sandbox Code Playgroud) 我在底部显示了以下activity_main.xml。在那里,出现a CoordinatorLayout和2 LinearLayouts。第一个LinearLayout1具有一个EditText用于输入一些文本的按钮,以及一个用于发送文本的按钮。第二个有另外两个按钮。
如果我单击EditText,键盘将显示出来,并使LinearLayout2中的所有内容几乎不可见。所以,我想在打开键盘时将两个按钮都隐藏在最后一个布局中。
我已经发现可以使用android:windowSoftInputMode="stateHidden"技巧,但这仅与中的活动有关AndroidManifest.xml。我只想在第二线性布局中使用此内部。已经尝试在此使用它,但没有成功。
另外,我要在xml中处理什么并保持MainActivity代码干净。有任何可能吗?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
...
<android.support.design.widget.CoordinatorLayout>
<android.support.v7.widget.RecyclerView/>
</android.support.design.widget.CoordinatorLayout>
<LinearLayout>
<EditText/>
<Button android:id="@+id/button_send"/>
</LinearLayout>
<LinearLayout>
<Button/>
<Button/>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现 aSearchView中OptionsMenu的 a Fragment。该onQueryTextChange和onQueryTextSubmit不工作。我不确定我哪里出错了。
菜单文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/profile"
android:orderInCategory="10"
android:title="Profile"
app:showAsAction="never">
</item>
<item
android:id="@+id/settings"
android:orderInCategory="11"
android:title="Settings"
app:showAsAction="never">
</item>
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always|collapseActionView"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我试图从 SearchView 访问文本的片段部分:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.browse_story_fragment, menu);
MenuItem myActionMenuItem = menu.findItem(R.id.action_search);
searchView = (SearchView) myActionMenuItem.getActionView();
SearchView.OnQueryTextListener listener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String query) {
query = query.toLowerCase();
Log.e("queryText",query);
return false;
}
public …Run Code Online (Sandbox Code Playgroud) android ×6
java ×2
caching ×1
cordova ×1
dagger ×1
dagger-2 ×1
geolocation ×1
google-maps ×1
gps ×1
image ×1
ionic2 ×1
ios ×1
javascript ×1
keyboard ×1
kotlin ×1
objective-c ×1
plugins ×1
searchview ×1
swift ×1
webview ×1
xml ×1