Articles of android activity

从对话或活动返回结果

我想知道,如果我可以冻结当前的活动,而我等待另一个活动或对话(任何会做)完成。 我知道我可以开始一个活动的结果,并在那里处理,但startActivityForResult()后的代码仍然会得到执行 这是我想要做的事情: PopupDialog dialog = new PopupDialog(this,android.R.style.Theme_Black_NoTitleBar); dialog.show(); // wait here, and continue the code after the dialog has finishes int result = getResultFromDialogSomehow(); if (result == 1){ //do something }else{ //do something else } 我知道这听起来很奇怪,但是如果有人能告诉我如何实现这样的function,我会非常感激。

活动是否因方向改变或应用程序closures而被销毁?

我有一个活动 ,启动一个AsyncTask 。 该活动允许以纵向或横向显示。 当方向改变时,活动被破坏并重新创build。 无论方向改变多less次,任务都会继续工作。 它也将结果返回到活动成功(根据CommonsWare的答案在这里http://goo.gl/WF1yW )。 我想要实现的是:当应用程序正在closures时,活动被破坏 – 任务应该被取消。 但是,当活动由于方向改变而被破坏时,任务不应被取消。 基本上问题是如何区分这两种情况:应用程序是closures/方向更改。 在这两种情况下,onDestroy()方法被调用,并没有简单的方法来检查像isChangingOrientation()… PS如果有必要,我也可以考虑一个完全不同的方法。

Android:意图标志销毁活动并开始新的活动

所以我有一个login活动当我input用户名和密码,然后点击loginbutton,我开始一个新的活动,这个活动膨胀了一个有着USER_NAME和PASSWORD EditText Views的login.xml布局。 新的活动有一个注销button,基本上只是启动前面的活动,如下所示: Intent loginIntent = new Intent(getActivity(), Login.class); loginIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); getActivity().startActivity(loginIntent); 根据Android文档,该标志执行以下操作: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP 如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是closures其上的所有其他活动,并将此Intent交付给(现在开启顶端)旧活动作为一个新的意图。 问题是,我注销后,用户名和密码仍然出现在EditText Views中,是否有一个标志销毁login活动,只是开始一个新的或有办法重置字段,每当我注销? 哪种方法更好?

如何使可缩放滚动视图?

在我的android应用程序中,我需要创build活动缩放能力。 我发现这里有用于缩放线性布局的有用代码。 但在我的应用程序中的一些活动开始scrollview和此代码不能识别滚动视图。 我怎样才能使可缩放活动缩放? 这是我的一个布局。 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollViewZoom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" > <LinearLayout android:id="@+id/wd_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:orientation="vertical" > <!– Start Circle –> <TableRow android:id="@+id/row_circl1" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginTop="30dp" android:background="@color/purple_color" > <RelativeLayout android:id="@+id/circle_layout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/white_color" > <ImageView android:id="@+id/img_engin_circle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:background="@drawable/circle_engin_bg" android:contentDescription="TODO" /> </RelativeLayout> <RelativeLayout android:id="@+id/circle_layout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/white_color" > <ImageView […]

有必要在每个活动中初始化Firebase分析?

我不想将任何特殊日志发送到Firebase Analytics控制台,只需检查哪些屏幕是用户花费更多时间等等。 当我使用AnalyticsTracker时,必须将其添加到任何位置,所以您可以使用Tracker.xml文件设置每个屏幕的特定名称。 官方文件说: 将Firebase Analytics的依赖关系添加到应用程序级build.gradle文件中: compile 'com.google.firebase:firebase-core:9.2.1' 在活动顶部声明FirebaseAnalytics对象: private FirebaseAnalytics mFirebaseAnalytics; 然后在onCreate()方法中初始化它: mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); 所以我想我会在每个想要获取数据的页面上都这样做,我还没有?

我可以有一个android活动只在第一次打开应用程序时运行吗?

好的,所以我正在玩一个android应用程序。 90%的用例是用户想要直接进入主要列表屏幕来find他们想要的东西。 这就是我想要的作为我的默认屏幕。 但是,当用户第一次加载应用程序时,在其列表屏幕对它们有任何价值之前,需要进行一些configuration。 所以我的问题是,如何在第一次打开应用程序时显示configuration活动,然后显示未来打开的列表屏幕。 我还想在configuration屏幕上放置一个演示button,所以我想不仅仅是检测到这是第一次,我特别想要检测用户是否在第一个屏幕上执行了某些configuration。

Espresso如何testingActivity是否完成?

我想断言,当前正在testing的Acitivty在执行某些操作时已完成。 不幸的是,到目前为止,我只是通过在testing结束后添加一些睡眠来断言。 有没有更好的办法 ? import android.content.Context; import android.os.Build; import android.support.test.rule.ActivityTestRule; import android.test.suitebuilder.annotation.LargeTest; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.junit.Assert.assertTrue; @SuppressWarnings("unchecked") @RunWith(JUnit4.class) @LargeTest public class MyActivityTest { Context context; @Rule public ActivityTestRule<MyActivity> activityRule = new ActivityTestRule(MyActivity.class, true, false); @Before public void setup() { super.setup(); // … } @Test public void […]

Android:静态字段和内存泄漏

我一直在研究在创build视图时防止上下文/活动内存泄漏的最佳实践,而且对于类中的静态字段,我似乎无法find什么是或不允许的明确答案。 比方说,我有这种forms的代码: public class MyOuterClass extends Activity{ private MyInnerClass; MyInnerClass = (MyInnerClass) findViewById(<XML call here>); MyInnerClass.myXInt = 3; // onCreate(), onResume(), etc. public static class MyInnerClass extends SurfaceView implements Runnable{ // Safe variables? private static int myXInt, myYInt; private static boolean myBoolean; // Potentially safe? private static Canvas myCanvas; // Definitely bad. private static Context […]

Android通知操作未被触发(PendingIntent)

我正在尝试在我的应用程序中添加一个通知操作项,这是一个音乐播放器。 当一个stream开始时,应该触发一个通知,并在通知中显示一个stream的停止button。 到目前为止,通知工作正常,我有停止行动项目的麻烦。 以下是在启动stream的服务中声明的方式: 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); 现在在我的活动onResume() – 方法我检查与getIntent()。getStringExtra()为“停”额外,但我通过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); 现在这个工作,如果活动目前在前台。 如果活动在后台,停止button什么都不做:( 编辑:我有我的活动中的BroadcastReceiver作为私人课程 private class DataUpdateReceiver extends BroadcastReceiver { @Override public void onReceive(Context […]

不是一个封闭的类错误的Android Studio

我是android开发新手,对Java没有深入的了解。 我被困在一个问题很长一段时间。 我正试图打开button单击一个新的活动。 但是我得到一个错误, 错误:不是封闭的类:Katra_home 。 这里是MainActivity.java的代码 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn=(Button)findViewById(R.id.bhawan1); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent myIntent = new Intent(Katra_home.this, Katra_home.class); Katra_home.this.startActivity(myIntent); } }); 这是Katra_home.java的代码 public class Katra_home extends BaseActivity { protected static final float MAX_TEXT_SCALE_DELTA = 0.3f; private […]