标签: android-activity

如何将值从一个活动传递到上一个活动

如何将值从一个屏幕传递到其上一个屏幕?

考虑这种情况:我有两个活动.第一个屏幕有一个TextView按钮,第二个活动有一个EditText按钮.

如果我单击第一个按钮,则必须移至第二个活动,此处用户必须在文本框中键入内容.如果他按下第二个屏幕上的按钮,则文本框中的值应移至第一个活动,并应显示在第一个活动中TextView.

android android-activity

94
推荐指数
3
解决办法
9万
查看次数

什么时候调用onSaveInstanceState()和onRestoreInstanceState()?

下图(来自官方文档)描述了Android活动的众所周知的生命周期:

在此输入图像描述

在另一方面,当活动是由系统(例如,由于存储器需要被回收的)破坏,该活动的状态有时自动地保存和恢复由所述方法的装置onSaveInstanceState()onRestoreInstanceState()由下图所示(也来自官方文件):

在此输入图像描述

我知道,onSaveInstanceState()不是总叫当活动即将被销毁.例如,如果由于用户按下"后退"按钮而导致销毁,则不会保留活动状态.但是在状态保存并恢复和onSaveInstanceState()/ onRestoreInstanceState()被调用的情况下,它们究竟何时被调用

例如,根据上面的图,onRestoreInstanceState()可以在之前onStart(),之后onStart()但之前onResume()或之后调用onResume().同样,存在几种可能性onSaveInstanceState().那他们什么时候打电话呢?

理想情况下,我希望看到一个组合图,显示活动生命周期状态和保存/恢复方法(如果存在).

android restore android-lifecycle android-activity

94
推荐指数
4
解决办法
5万
查看次数

以编程方式从活动/服务/接收器更新小部件

我知道这是可能的,但我无法找到一种方法来触发主要活动的小部件更新.我可以播放一些一般意图吗?

android android-widget android-activity

93
推荐指数
9
解决办法
6万
查看次数

如何向活动结束添加动画()

我正在使用overridePendingTransition来创建我的活动并且工作正常我可以看到淡入效果非常好,但是当我尝试为活动完成动画时,它仍然是默认的向右滑动.

我在开始活动时首先尝试定义out动画,如下所示:

Intent myIntent = new Intent(a, SkdyAlert.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    a.startActivity(myIntent);
    if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
        AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
    }
Run Code Online (Sandbox Code Playgroud)

然后我也尝试在完成活动时这样做

okBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            finish();
            if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
                AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

但这些方法都不会阻止退出动画的"从右到左"幻灯片.关于我做错了什么的任何想法?

animation android android-activity

93
推荐指数
8
解决办法
9万
查看次数

完成另一个活动的活动

我想完成另一项活动的一项活动,例如:

在活动[A]中,单击按钮时,我调用活动[B]而不完成活动[A].

现在在Activity [B]中,有两个按钮,NewModify.当用户点击修改然后从堆栈中弹出活动[A]并勾选所有选项.

但是当用户单击Activity [B]中的New按钮时,我将不得不从堆栈中完成Activity [A]并再次将Activity [A]重新加载到堆栈中.

我正在尝试,但我无法从堆栈中完成活动[A] ......我怎么能这样做?

我使用的代码如下:

来自活动[A]:

Intent GotoB = new Intent(A.this,B.class);
startActivityForResult(GotoB,1);
Run Code Online (Sandbox Code Playgroud)

同一活动中的另一种方法

public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    if (requestCode == 1)
    {
        if (resultCode == 1) {
            Intent i = getIntent();
            overridePendingTransition(0, 0);
            i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            finish();

            overridePendingTransition(0, 0);
            startActivity(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在活动[B]中,点击按钮:

setResult(1);
finish();
Run Code Online (Sandbox Code Playgroud)

android android-intent android-activity

93
推荐指数
7
解决办法
13万
查看次数

在片段或活动中使用工具栏的协调器布局

使用新的设计库有几个新的布局,如果开发人员愿意,可以改变工具栏的行为方式.由于不同的片段具有不同的行为和目标,例如,具有折叠工具栏的画廊片段显示重要照片,或者没有滚动视图的片段,不需要appbarlayout来隐藏工具栏,在活动中具有单个工具栏可以证明很难.

那么,我应该将工具栏移动到每个片段吗?如果是这样,我每次显示片段时都必须设置supportActionBar,并且还要在片段中引用活动,这会使片段的独立性无效.如果我单独将Activity放在Activity中,我必须为每个片段中的每种行为定义多个布局.什么是最好的方法?

android android-fragments android-activity android-actionbar

93
推荐指数
2
解决办法
4万
查看次数

onActivityResult()过早调用

我从我的工人活动开始Activity(后代PreferenceActivity)如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1458)
        loadInfo();
}

void showSettingsDialog()
{
    startActivityForResult(new Intent().setClass(this, MyConfigure.class), 1458);
}
Run Code Online (Sandbox Code Playgroud)

MyConfigureclass没有任何setResult()电话.实际上,MyConfigure除了OnCreate()使用加载首选项之外,类没有任何代码addPreferencesFromResource.

如今onActivityResult被称为具有requestCode1458过早,之后MyConfigure活动运行.测试1.6和2.1仿真器以及2.1设备.是否有人打电话到setResult()某处PreferenceActivity?或者如何解释这个过早的电话呢?

android android-activity

92
推荐指数
3
解决办法
3万
查看次数

以编程方式安装Android关闭活动

导出远离屏幕的活动中的等效操作是什么.就像按下后退按钮一样,活动也会消失.如何从活动内部调用它以使其自行关闭.

android android-activity

90
推荐指数
3
解决办法
10万
查看次数

如何在PreferenceFragment中侦听首选项更改?

如上所述这里,我继承PreferenceFragment并显示它的活动中.该文档解释了如何在此处监听首选项更改,但前提是您将PreferenceActivity子类化.由于我不这样做,我如何监听偏好变化?

我已经尝试在我的PreferenceFragment中实现OnSharedPreferenceChangeListener但它似乎不起作用(onSharedPreferenceChanged似乎永远不会被调用).

到目前为止这是我的代码:

SettingsActivity.java

public class SettingsActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

SettingsFragment.java

public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener
{
    public static final String KEY_PREF_EXERCISES = "pref_number_of_exercises";

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
    {
        //IT NEVER GETS …
Run Code Online (Sandbox Code Playgroud)

android android-preferences sharedpreferences android-fragments android-activity

88
推荐指数
3
解决办法
6万
查看次数

如何在Android应用程序中单击按钮打开第二个活动

我正在学习构建Android应用程序,我需要一些特定的帮助.我似乎无法理解我需要更改哪些模板代码,以及哪些位是静态的.

LAYOUT文件夹中,我有我的ACTIVITY_MAIN.XML读取

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">

 <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/main_buttons_photos" />

 </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

接下来,我有我的第二个活动ACTIVITY_SEND_PHOTOS.XML这是

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

 <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="@string/hello_world"
    tools:context=".SendPhotos" />

 <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/title_activity_send_photos"
    android:textAppearance="?android:attr/textAppearanceLarge" />

 </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

然后我有我的MainActivity.java(这是.class?)这个包com.example.assent.bc;

 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 import android.view.View;

 public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-activity

87
推荐指数
5
解决办法
31万
查看次数