我在android中构建一个弹出菜单,我需要在每个菜单项中存储一些ID.ID是String,因此如果我可以将一个String数组设置为MenuItem,那将是很好的.
问题是MenuItem没有setTag方法.
我怎么能附加一些数据呢?
编辑:Geobits提到了getActionView();
不幸的是,它返回null.
但是,执行以下操作是否省事?
View view = new View(getActivity());
view.setTag(tag);
menuItem.setActionView(view);
Run Code Online (Sandbox Code Playgroud) 我正在使用Google Play服务中的PlacePicker库来启动新活动.新活动/选择器有一个工具栏(操作栏),默认情况下没有设置样式.
PlacePicker文档说明了这一点
如果使用材质主题在应用程序中设置自定义颜色,则场所选择器将从主题继承colorPrimary和colorPrimaryDark属性.
我的style.xml文件中有一个主题:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">#5665bb</item>
<item name="android:colorPrimary">#5665bb</item>
<item name="colorPrimaryDark">#41456b</item>
<item name="android:colorPrimaryDark">#41456b</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我已经设置了在Android Manifesto文件中使用的主题
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
Run Code Online (Sandbox Code Playgroud)
placepicker由以下代码创建:
try {
PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder();
Intent intent = intentBuilder.build(Main.this);
// Start the intent by requesting a result,
// identified by a request code.
startActivityForResult(intent, REQUEST_PLACE_PICKER);
} catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) {
Log.e("", "Error with Google Play lib.");
}
Run Code Online (Sandbox Code Playgroud)
但是,工具栏不会设置样式.和以前一样,它有白色背景和黑色文字.有趣的是,我自己的工具栏(动作栏)确实得到了样式.
如何强制使用placepicker活动来采用我的主题?
android android-theme google-places-api google-play-services
我很担心 C 中的字符串。我需要设置最后一个字符 \0 还是它自己设置?如果我不手动执行,那么当我尝试调试代码以及访问 string1[257] 时它不为空。我在释放字符串数组的分配内存时遇到问题,所以我认为这是一个原因。
char string1[257], string2[257];
scanf("%s", &string2);
string1[257] = '\0';
strncpy(string1, string2, 257);
string1[257] = '\0'; /* do I need to do that? */
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码来创建菜单:
PopupMenu popup = new PopupMenu(getApplicationContext(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.equalizer, popup.getMenu());
popup.show();
Run Code Online (Sandbox Code Playgroud)
equalizer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:id="@+id/flat"
android:title="Flat" />
<item android:id="@+id/stadium"
android:title="Stadium" />
<item android:id="@+id/jazz"
android:title="Jazz" />
<item android:id="@+id/rock"
android:title="Rock" />
<item android:id="@+id/pop"
android:title="Pop" />
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
如何设置,比方说,默认选择菜单的第3个选项?
编辑: 我想以编程方式更改默认值.
创建一个单独的类并将其用作仅包含静态数据变量的存储是不是一个坏主意?
我目前正在开发一个Android应用程序,但问题是Java的一般问题.
在android的情况下,我正在跨越活动,我想在一个单独的类中存储一些全局/静态标志/变量,并能够从我想要的任何活动中访问它们.
PS.仅在会话时间内需要数据.
我目前正在开发一个包含专辑列表的片段.结构非常简单:
水平滑块包含LinearLayour(水平).为了添加带有歌曲列表的专辑,我创建了一个单独的视图,其中包括封面图像和列表视图.列表视图也是自定义的,其中项目是linearlayout,包含3个textviews.然后我膨胀它,填充列表,并添加到水平滑块.
如果我有超过2个专辑列表,则会出现此问题.打开片段需要一些时间.
另一件事是当我尝试滚动(水平)时,有时会停止片刻,这会导致糟糕的用户体验.
我想说的是,我看到了类似的观点,他们的工作很快,没有滞后.有可能以某种方式优化它吗?或者是否有可能使片段立即打开,然后列表加载(延迟加载).
LISTVIEW项目:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#ccffffff"
android:padding="10dp" >
<TextView
android:id="@+id/album_list_item_number"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:text=""
android:gravity="center|center_vertical"
android:layout_gravity="center|center_vertical"
android:textColor="#333333"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/album_list_item_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:gravity="left|center_vertical"
android:layout_gravity="left|center_vertical"
android:textColor="#333333"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/album_list_item_time"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:text=""
android:gravity="center|center_vertical"
android:layout_gravity="center|center_vertical"
android:textColor="#333333"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在水平滑块上列出并添加视图:
View albumView = inflater.inflate(R.layout.artist_album_col, container, false);
//setting cover
ImageView albumCover = (ImageView) albumView.findViewById(R.id.artistAlbumCover);
albumCover.setImageDrawable(getResources().getDrawable(R.drawable.albumcover)); //cover
ListView albumList = (ListView) albumView.findViewById(R.id.artistSongList);
// create the grid item mapping
String[] from = new …Run Code Online (Sandbox Code Playgroud) 从Android 4.1(在Wi-Fi Direct服务发现下),它假设支持本机UPnP服务发现.
我认为它是为Wi-Fi Direct开发的,但可用的方法似乎是通用的.甚至JavaDoc方法也提到它会搜索网络上的所有UPnP服务,而不仅仅是WiFi Direct奴隶/主服务器.
但是,我没有实现它以便它工作...我设法设置所有要求,我得到积极的onSuccess回调,但我没有得到onUpnpServiceAvailable回调通知网络上的服务.我在UPnP上有3个服务,我可以使用第三方库发现.
有人试过这个功能吗?
final Channel mChannel;
final WifiP2pManager mManager;
WifiP2pServiceRequest mRequester;
mManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = mManager.initialize(this, getMainLooper(), new ChannelListener() {
public void onChannelDisconnected() {
Log.i("CI", "Channel detected!");
}
});
mManager.setUpnpServiceResponseListener(mChannel, new UpnpServiceResponseListener() {
public void onUpnpServiceAvailable(List<String> arg0, WifiP2pDevice arg1) {
Log.i("sd", "Found device!!");
}
});
mRequester = WifiP2pUpnpServiceRequest.newInstance();
mManager.addServiceRequest(mChannel, mRequester, new ActionListener() {
public void onSuccess() {
Log.i("d", "AddServiceRequest success!");
mManager.discoverServices(mChannel, new ActionListener() {
public void onSuccess() …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种解决方案,将事件从我的服务器推送到客户端,这将是Android,iOS和桌面(网络)用户.
我在Parse,Amazon SNS和Google Cloud Messaging上看到了不少帖子,但是他们没有提到它们的速度和最常见的应用程序,或者与简单的TCP流或websockets进行比较?
我需要为每个客户端提供高达50个事件/秒的双向吞吐量(每个事件¬1kb),最大延迟为150毫秒.
仅使用TCP事件流与websockets对比SNS/Parse/GCM有什么缺点?
events websocket amazon-sns parse-platform google-cloud-messaging
例如,如果我给出了类似于下面的消息结构的要求:
Java中是否有任何库可以更快地完成它?
或者我必须手动创建它作为一个单独的类与字节数组和setter/getters?
Jasmine是以BDD方式对javascript代码进行单元测试的最广泛使用的测试框架之一.我试图将它用于AngularJS组件测试.AngularJS文档提供以下示例代码
describe('PasswordController', function() {
beforeEach(module('app'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('$scope.grade', function() {
it('sets the strength to "strong" if the password length is >8 chars', function() {
var $scope = {};
var controller = $controller('PasswordController', { $scope: $scope });
$scope.password = 'longerthaneightchars';
$scope.grade();
expect($scope.strength).toEqual('strong');
});
});
});
Run Code Online (Sandbox Code Playgroud)
所以上面的代码使用角度模拟库和依赖注入通过控制器处理范围.现在我有一个范围对象,其中包含我的控制器分配给它的函数和对象.我可以很好地测试它.快乐.
现在有趣的部分是,如果我想测试没有链接到范围的函数.例如,doSomethingVeryCoolThatNeedsTesting下面的功能
angular.module('app', [])
.controller('PasswordController', function PasswordController($scope) {
$scope.password = '';
$scope.grade = function() {
var size = $scope.password.length;
if (size > 8) {
$scope.strength = 'strong';
} else …Run Code Online (Sandbox Code Playgroud) android ×6
java ×3
amazon-sns ×1
angularjs ×1
c ×1
events ×1
jasmine ×1
javascript ×1
menuitem ×1
null ×1
string ×1
unit-testing ×1
upnp ×1
websocket ×1