我想在Android Studio中使用支持库构建一个应用程序但是在添加支持库的依赖项时出现以下错误:
Error:Failed to find: com.android.support:support-v4:19.1.0
Run Code Online (Sandbox Code Playgroud)
这是我的build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20'
defaultConfig {
applicationId "sample.myapplication"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:19.1.0'
}
Run Code Online (Sandbox Code Playgroud)
我已经通过sdk管理器下载了支持库.
android gradle android-support-library android-studio android-gradle-plugin
我想在我的应用程序中添加一个Notification操作项,这是一个音乐播放器.启动流时,应触发通知,并在通知中显示流的停止按钮.到目前为止通知工作正常,我遇到了停止操作项目的问题.以下是在启动流的服务中声明它的方式:
Intent stopIntent = new Intent(this, MusicPlayerNew.class);
stopIntent.putExtra("STOP", "STOP");
PendingIntent stopPendingIntent = PendingIntent.getActivity(this, 0,
stopIntent, PendingIntent.FLAG_UPDATE_CURRENT, null);
mBuilder.addAction(R.drawable.ic_stat_stop, "Stop", stopPendingIntent);
Run Code Online (Sandbox Code Playgroud)
现在在onResume() - 我的活动方法中,我用getIntent().getStringExtra()检查"STOP"额外,但我通过getIntent()检索的意图没有设置额外的东西:(
我还试图检查发送广播(我有一个广播接收器工作从服务到活动进行通信)
Intent stopIntent2 = new Intent(MusicPlayerNew.STOP_MEDIAPLAYER);
PendingIntent stopPendingIntent2 = PendingIntent.getBroadcast(this, 0,
stopIntent2, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.addAction(R.drawable.ic_stat_stop, "Stop", stopPendingIntent2);
Run Code Online (Sandbox Code Playgroud)
现在,如果活动当前位于前台,则此功能正常.如果活动在后台,则停止按钮不执行任何操作:(
编辑: 我在我的Activity中将BroadcastReceiver作为私有类
private class DataUpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
..
}}
Run Code Online (Sandbox Code Playgroud)
在onResume()中注册我的app接收器:
intentFilter = new IntentFilter(STOP_MEDIAPLAYER);
registerReceiver(dataUpdateReceiver, intentFilter);
Run Code Online (Sandbox Code Playgroud)
的onPause()
unregisterReceiver(dataUpdateReceiver);
Run Code Online (Sandbox Code Playgroud)
现在,如果我从onPause() - 方法中删除取消注册,即使app/activity不在前台,也会收到广播.但这是正确的方法吗?我从网上的教程中得到了这个注册/取消注册的内容我认为..
android android-intent android-notifications android-activity android-pendingintent
我有一个可以包含几个片段的活动.每个片段都可以在ActionBar中拥有自己的菜单条目.到目前为止,此工作正常,每个项目都是可点击的,并执行所需的操作.
我的问题如下.在MainActivity中,我声明了以下几行来拦截对ActionBar的HomeIcon的调用:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
clearBackStack();
setHomeFragment();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
我在Activity中声明了它,因为我希望每个Fragment都应该调用它,这样我就不必捕获每个片段中的android.R.id.home情况.
在一个片段中,我使用的是setDisplayHomeAsUpEnabled(true),因此我得到了ActionBar图标左侧的小箭头.当在这个片段中单击HomeIcon时,我不想设置HomeFragment,我想设置上次显示的片段.所以我有一个onOptionsItemSelected - 片段中的方法:
@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case android.R.id.home:
setLastFragment();
return true;
...
Run Code Online (Sandbox Code Playgroud)
然而,这并不像我希望的那样工作.首先调用Activity的onOptionsItemSelected,捕获MenuItem并重定向到HomeFragment.使用在其他片段中声明的其他MenuItems,我可以检查看到相同的行为.首先调用Activity,不捕获MenuItem(默认情况),然后重定向到super.onOptionsItemSelected(item).
因此,Android处理菜单点击的情况似乎就是这样.第一个活动,然后是片段.有没有办法改变这个?我不想把android.R.id.home-case放在每个片段中并在那里处理它.有没有更好的方法来做到这一点?
android android-menu android-fragments android-fragmentactivity
我正在使用Android Studio(IntelliJ)来编写Android应用程序,并且我遇到了热代码交换和libgdx的问题.当我在演示模式下运行桌面应用程序时,一切正常.如果我尝试更改一点(例如元素的颜色),则应用程序中不会刷新任何内容.即使我选择Run-> Reload更改了更改,也会启动一个新的gradle构建(需要很长时间),然后说找不到任何更改.
我在eclipse中导入了相同的示例应用程序.我可以在代码中更改某些内容,并立即显示在正在运行的应用中.
有其他人遇到过这个问题吗?为什么在IntelliJ中这不可能?