Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用本机代码更改Tianium中actionbar中的home/back按钮图标?_Android_Titanium_Titanium Mobile_Appcelerator Hyperloop_Hyperloop - Fatal编程技术网

Android 如何使用本机代码更改Tianium中actionbar中的home/back按钮图标?

Android 如何使用本机代码更改Tianium中actionbar中的home/back按钮图标?,android,titanium,titanium-mobile,appcelerator-hyperloop,hyperloop,Android,Titanium,Titanium Mobile,Appcelerator Hyperloop,Hyperloop,我想更改钛合金的返回/主页按钮图标。我可以用主题来做这件事 但是,我想在应用主题后在运行时更改图标。钛合金的actionbar没有任何属性或方法来更改图标。因此,我使用超循环(本机代码)来更改图标,但不幸的是,我无法访问actionbar 这是我的看法 <Alloy> <Window class="container"> <ActionBar id="actionbar" displayHomeAsUp="true" homeButtonEn

我想更改钛合金的返回/主页按钮图标。我可以用主题来做这件事

但是,我想在应用主题后在运行时更改图标。钛合金的actionbar没有任何属性或方法来更改图标。因此,我使用超循环(本机代码)来更改图标,但不幸的是,我无法访问actionbar

这是我的看法

<Alloy>
    <Window class="container">
        <ActionBar id="actionbar" displayHomeAsUp="true" homeButtonEnabled="true"></ActionBar>
        <Label id="label" onClick="doClick">Hello, World</Label>
    </Window>
</Alloy>
错误呢

[ERROR] TiExceptionHandler: (main) [1,434] /alloy/controllers/index.js:69
[ERROR] TiExceptionHandler:   activity.getActionBar().setHomeAsUpIndicator(Titanium.Android.R.drawable.notificacionmas);
[ERROR] TiExceptionHandler:                           ^
[ERROR] TiExceptionHandler: TypeError: activity.getActionBar(...).setHomeAsUpIndicator is not a function
[ERROR] TiExceptionHandler:     at new Controller (/alloy/controllers/index.js:69:27)
[ERROR] TiExceptionHandler:     at Object.exports.createController (/alloy.js:428:10)
[ERROR] TiExceptionHandler:     at /app.js:22:7
[ERROR] TiExceptionHandler:     at Module._runScript (ti:/module.js:608:9)
[ERROR] TiExceptionHandler:     at Module.load (ti:/module.js:107:7)
[ERROR] TiExceptionHandler:     at Module.loadJavascriptText (ti:/module.js:453:9)
[ERROR] TiExceptionHandler:     at Module.loadAsFile (ti:/module.js:508:15)
[ERROR] TiExceptionHandler:     at Module.loadAsFileOrDirectory (ti:/module.js:425:20)
[ERROR] TiExceptionHandler:     at Module.require (ti:/module.js:255:17)
[ERROR] TiExceptionHandler:     at Module.global.Module.require (/ti.main.js:11435:34)
[ERROR] TiExceptionHandler:
[ERROR] TiExceptionHandler:     org.appcelerator.kroll.runtime.v8.V8Runtime.nativeRunModule(Native Method)
[ERROR] TiExceptionHandler:     org.appcelerator.kroll.runtime.v8.V8Runtime.doRunModule(V8Runtime.java:162)
[ERROR] TiExceptionHandler:     org.appcelerator.kroll.KrollRuntime.runModule(KrollRuntime.java:207)
[ERROR] TiExceptionHandler:     org.appcelerator.titanium.TiLaunchActivity.loadScript(TiLaunchActivity.java:99)
[ERROR] TiExceptionHandler:     org.appcelerator.titanium.TiRootActivity.loadScript(TiRootActivity.java:480)
[ERROR] TiExceptionHandler:     org.appcelerator.titanium.TiLaunchActivity.onResume(TiLaunchActivity.java:183)
[ERROR] TiExceptionHandler:     org.appcelerator.titanium.TiRootActivity.onResume(TiRootActivity.java:499)
[ERROR] TiExceptionHandler:     android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1446)
[ERROR] TiExceptionHandler:     android.app.Activity.performResume(Activity.java:7939)
[ERROR] TiExceptionHandler:     android.app.ActivityThread.performResumeActivity(ActivityThread.java:4195)
[ERROR] V8Exception: Exception occurred at /alloy/controllers/index.js:69: Uncaught TypeError: activity.getActionBar(...).setHomeAsUpIndicator is not a function

我相信这个问题不是重复的,因为它与Tianium有关,而不是原生Android。

这绝对不需要Hyperloop

您可以使用
活动

然后,您可以从活动中获取
操作栏
,然后使用
操作栏的
图标
属性更改图标

确保只有在窗口触发
open
事件后才能执行此操作

window.addEvenListener('open', e => {
  var actionbar = window.activity.actionBar;
  actionbar.icon = '/images/upicon.png'; 
});

我已经在更新了我的超循环示例

它使用“折叠工具栏”示例屏幕中的自定义后退图标。 我添加了一个图标xml:


并将其分配给

toolbar.setNavigationIcon(resIDFromString(“ic_action_users”,“drawable”);
()


完整示例在回购协议中

这会更改应用程序图标,而不是后退按钮。如果我只需要显示一个图标,而不是与图标交互,那么这对我来说是可行的。谢谢+1我举了一个使用自定义XML布局的示例,其中我指定了Actionbar并通过代码访问它:如果这是一个选项,您可以尝试更改图标,我现在也遇到了同样的问题。看起来Hyperloop希望您使用android.app.Activity,即使Tianium使用支持库(至少在9.0.0之前),并且该活动不会返回带有getActionBar()的ActionBar。Tianium没有公开setHomeAsUpIndicator()方法,这真是令人沮丧。setIcon和setLogo都没有设置实际的按钮drawable.FYI我尝试使用android.support.v7.app.AppCompatActivity和getSupportActionBar()。它返回一个ActionBar实例,但似乎没有与实际的ActionBar绑定。@cr0ybo我累了,放弃了。我只需要在一个屏幕上显示这个。客户端希望用通知按钮替换主页按钮。所以我隐藏了actionbar并放置了一个看起来像actionbar的视图。@miga谢谢你的帮助。我使用了你的一些代码,但不幸的是我无法设置图标。我想我是用一种错误的方式传递了对drawable的引用。
window.addEvenListener('open', e => {
  var actionbar = window.activity.actionBar;
  actionbar.icon = '/images/upicon.png'; 
});