我试着写简单的音乐播放器并面对这样的问题.在我的UI中,我有几个片段,用于显示歌曲的不同模式(例如,所有音乐,所选文件夹中的音乐,播放列表中的音乐等).我也有一个播放音乐的服务.
当用户在播放状态下关闭播放器时我想保存UI状态(即当前显示片段)并在再次打开播放器后恢复该状态(如果用户关闭播放器处于暂停状态则不需要).
为了保存状态我使用我的Service,如上所述.在onDestroy()我的活动方法中,我将所有需要的数据用于恢复意图和调用startService(intent).服务将此数据保存到本地变量.在onCreate()我的活动方法中,我startService用意图调用,包含已保存状态的请求.在服务中,我将保存的数据置于意图中并将其发送到Activity使用LocalBroadcastManager.getInstance(this).sendBroadcast(intent)方法.在BroadcastListener我的内部类中,我Activity收到此意图并提取数据.看来没关系.
但是当我尝试恢复时Fragments,问题就开始了,当用户关闭播放器时会显示.应用程序崩溃unhandled exception.这里是backstack:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1377)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1395)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:637)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:616)
at com.borune.test.MainActivity.switchFragments(MainActivity.java:58)
at com.borune.test.MainActivity$MyServiceListener.onReceive(MainActivity.java:102)
at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:297)
at android.support.v4.content.LocalBroadcastManager.access$000(LocalBroadcastManager.java:46)
at android.support.v4.content.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5032)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索这个例外,但所有提出的解决方案对我的情况都没有帮助.我写了一个重复描述问题的简单项目.这是代码:
MainActivity.java:
public class MainActivity extends ActionBarActivity { …Run Code Online (Sandbox Code Playgroud) 我正在使用MPAndroidChart库版本2.2.4.我的要求是我想在a中设置三个标记线,其BarChart值为"Minimum","Average"和"Maximum",如下图所示,但我找不到任何解决方案.
我使用以下代码成功混淆了类名和方法
buildTypes {
release {
shrinkResources false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
Run Code Online (Sandbox Code Playgroud)
在应用程序级build.gradle文件中
和
-dontwarn mypackage.**
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontwarn
Run Code Online (Sandbox Code Playgroud)
在 proguard-rules.pro
但我的问题是包名没有被混淆。
那我怎样才能达到它,请帮忙。
谢谢
嗨我有三个菜单项默认显示在右侧.
我想在左边显示一个菜单,在右边显示另外两个菜单.
我的Menu.xml文件是
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_version"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_version"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_refresh"
android:actionViewClass="android.support.v7.widget.RefreshView"
android:icon="@drawable/ic_refresh_holo_dark"
android:orderInCategory="100"
android:gravity ="left"
android:layout_gravity="left"
android:showAsAction="ifRoom|collapseActionView"
android:title="Refresh"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
如何将最左侧的刷新菜单与右侧的其他刷新菜单对齐.
有没有人知道Smart Lock?它是如何工作的?
我想在Android应用程序中开发一个为密码实现Smart Lock的应用程序.
我关注的是https://developers.google.com/identity/smartlock-passwords/android/.
我已经初始化了 GoogleApiClient
mCredentialsApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Auth.CREDENTIALS_API)
.build();
Run Code Online (Sandbox Code Playgroud)
并生成Credentialas的实例
final Credential credential = new Credential.Builder(email)
.setPassword(password)
.build();
Run Code Online (Sandbox Code Playgroud)
用来保存凭证Credentials API,我用过
Auth.CredentialsApi.save(mCredentialsClient, credential).setResultCallback(
new ResultCallback() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
// Credentials were saved
} else {
if (status.hasResolution()) {
// Try to resolve the save request. This will prompt the user if
// the credential is new.
try {
status.startResolutionForResult(this, RC_SAVE);
} catch …Run Code Online (Sandbox Code Playgroud) android credentials google-play-services google-smartlockpasswords
我正在学习本教程:http://mobile.tutsplus.com/tutorials/android/capture-and-crop-an-image-with-the-device-camera/
我正在尝试创建一个简单的活动,其中包含一个" take picture" Button和一个ImageView简单的拍照,然后打开Android内置的裁剪活动.我可以毫无意外地打开相机,但是,在拍摄照片时,代码不会将照片发送到裁剪活动.
调用裁剪活动时似乎崩溃了.我不确定为什么会这样; 我完全按照这个例子(除了我不需要的开始XML的东西),我查看了代码,一切似乎都有意义.我确定这是造成这种情况的一个小错误.这是我的活动代码:
package com.example.project;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class ImageChoose extends Activity implements OnClickListener {
//keep track of camera capture intent
final int CAMERA_CAPTURE = 1;
//captured picture uri
private Uri picUri;
final int PIC_CROP = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_choose); …Run Code Online (Sandbox Code Playgroud) 嗨,Could not update ICEAuthority file /home/neha/.ICEAuthority当我从Ubantu 12.4上的帐户登录时,我遇到了问题.
请帮我
我已经.so在Linus上通过C++ 生成了一个文件并且.so现在生成了文件我已经交叉编译了这个.so文件,Android ARM所以我必须通过它来编辑它Android NDK以便.so
在我的android项目中使用新的genrated .
所以任何人都可以帮助我在我的Android项目中放置Linux生成的.so文件以及在Make文件(Android.mk)中添加什么内容,以便它可以.so使用我之前生成的Linux文件中的现有方法生成新.so文件.
我希望我的问题清楚,如果不是,请告诉我.
请帮我.提前致谢
我正在尝试Fragment在 Android 上进行测试Robolectric,我知道还有一些其他帖子关于FragmentActivity当它没有存储在某个变量中时的问题。
但是,我试图使这篇文章起作用,您可以看到在这种情况下FragmentActivity对象引用被保留,因此应该没有问题。这是基类:
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import org.junit.After;
import org.robolectric.Robolectric;
import org.robolectric.util.ActivityController;
public class FragmentTestCase<T extends Fragment> {
private static final String FRAGMENT_TAG = "fragment";
private ActivityController controller;
private FragmentActivity activity;
private T fragment;
public void startFragment(T fragment) {
this.fragment = fragment;
controller = Robolectric.buildActivity(FragmentActivity.class);
activity = (FragmentActivity) controller.create().start().visible().get();
activity.getSupportFragmentManager()
.beginTransaction()
.add(fragment, FRAGMENT_TAG).commit();
}
@After
public void destroyFragment() {
if (fragment != null) {
activity.getSupportFragmentManager()
.beginTransaction()
.remove(fragment)
.commit(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试TextViews使用SQLiteDataBase 填充第二个事件.当用户点击该项目时,ListView他/她可以在第二个上查看事件的详细信息,Activity但每当我点击某个事件时它就会崩溃.
MainActivity.java
myList.setAdapter(myCursorAdapter);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor myCursor = (Cursor) myList.getItemAtPosition(position);
String pickedString = myCursor.getString(1);
Intent intent = new Intent(getApplicationContext(),EventDetails.class);
intent.putExtra("name_var", pickedString);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
DBHelper:
public ArrayList<String> getEvent(String name)
{
ArrayList<String> array_list = new ArrayList<String>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from events WHERE name='" +name+"'", null );
res.moveToFirst();
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_NAME))); …Run Code Online (Sandbox Code Playgroud) android ×9
java ×2
android-ndk ×1
c++ ×1
credentials ×1
linux ×1
menuitem ×1
obfuscation ×1
robolectric ×1
sqlite ×1