小编Yog*_*ani的帖子

如何在方向更改时保留EditText数据?

我有一个登录屏幕,其中包含2个用于用户名和密码的EditTexts.我的要求是,在方向更改时,EditText中的输入数据(如果有)应保持原样,并且还应绘制新布局.我有2个布局xml文件 - 一个在布局文件夹中,另一个在layout-land文件夹中.我正在尝试实现以下两种方法,但它们都不是完美的:

(1)configChanges:keyboardHidden -在这种方法中,我没有在清单文件中的configChanges中提供"orientation".所以我在onCreate()和onConfigurationChanged()方法中都调用了setContentView()方法.它符合我的要求.布局已更改,EditTexts中的输入数据也保持不变.但它有一个很大的问题:

当用户单击"登录"按钮时,将显示ProgressDialog,直到收到服务器响应.现在,如果用户在ProgressDialog运行时旋转设备,则应用程序崩溃.它显示一个异常,说"视图无法附加到窗口".我试图使用onSaveInstanceState处理它(它会在方向更改时被调用)但应用程序仍然崩溃.

(2)configChanges:orientation | keyboardHidden -在这种方法中,我在清单中提供"方向".所以现在我有两个场景:

(a)如果我在onCreate()和onConfigurationChanged()中调用setContentView()方法,则相应地更改Layout,但EditText数据会丢失.

(b)如果我在onCreate()中调用setContentView()方法,而不是onConfigurationChanged(),则EditText数据不会丢失,但布局也不会相应地更改.

在这种方法中,甚至没有调用onSaveInstanceState().

所以我处在一个非常令人生畏的境地.有没有解决这个问题的方法?请帮忙.Thanx提前.

android orientation android-layout android-edittext

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

为什么BroadcastReceiver即使应用程序处于后台也能正常工作?

我正在使用BroadcastReceiver检查我的应用程序中的Internet连接,如果连接丢失,我会显示一个警告对话框.它工作正常.但我的问题是,即使我的应用程序在背景幕中,BroadcastReceiver也能正常工作.因此,即使用户在其他应用程序中,当互联网连接丢失时,对话框也会弹出.这完全破坏了我的应用程序.

有没有人知道如何限制应用程序中的广播接收器?

这是我的BroadcastReceiver:

 public class ConnectivityChangedReceiver extends BroadcastReceiver{

    @Override
    public void onReceive( Context context, Intent intent )
     {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE );
    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnected()) {
    } else {
        try{
            Intent i=new Intent(context, InternetDialogActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        } catch(Exception e){
            e.printStackTrace();
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

活动是:

 public class InternetDialogActivity extends Activity implements OnClickListener{
   @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.internet_dialog_box);
      getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
      Button retryButton = (Button) findViewById(R.id.retryInternetButton);
      retryButton.setOnClickListener(this);
    }

   public …
Run Code Online (Sandbox Code Playgroud)

android manifest broadcastreceiver

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

如何故意在EditText中转到新行?

我正在创建一个提供聊天功能的应用程序.屏幕上有一个EditText,我在其上设置了OnKeyListener.每当用户在键入消息后按"Enter"键时,消息就会在屏幕上显示.它工作正常.这是我的EditText:

<EditText android:id="@+id/chatMessageField"
    android:layout_height="wrap_content" android:layout_width="fill_parent"
    android:layout_gravity="center_horizontal|center_vertical"
    android:layout_marginRight="5dip" android:layout_marginLeft="5dip"
    android:maxLines="2" android:minLines="1" android:scrollbars="vertical"
    android:hint="@string/chatMessageHintText" android:textColorHint="#3b64a8">
</EditText>
Run Code Online (Sandbox Code Playgroud)

问题是当用户想要在EditText包装文本并转到新行之前转到新行.现在,如果用户想要转到新行并按"Enter"键,则会发送消息.

在一些聊天消息中,我已经看到按下"Shift + Enter"(或任何其他键组合)同时将用户带到新行.我们如何检测Android中同时按下的"Shift + Enter"(或任何其他键组合)键?有没有办法在Android中实现此功能?

android android-edittext

5
推荐指数
2
解决办法
7789
查看次数

九贴片图像显示奇怪的行为?

我正在Android中创建一个实现聊天功能的应用程序.我有2种聊天气泡 - 其他用户为蓝色,登录用户为橙色.我正在使用Nine-patch图像来处理这些气泡,因为气泡可以被拉伸.

蓝色气泡中的文字显示正常 - 位于中间(如下图所示).但是橙色气泡中的文字显示在图像上边缘的一些垂直间隙之后.我无法弄清楚为什么会这样.两个气泡都具有相同的属性,并且是按照相同的步骤创建的.请帮忙.提前致谢.

chatbubbles

这是橙色聊天泡泡:

orangebubble

android nine-patch android-layout

3
推荐指数
1
解决办法
1236
查看次数

旋转设备时EditText数据丢失

伙计们,我完成了它.我一直在谷歌搜索过去2天,但我找不到确切的解决方案.每个人都在谈论configChanges和所有那些在我的案例中似乎不起作用的陈词滥调.

我有一个登录屏幕,由2个EditTexts组成.现在,此登录屏幕具有不同的纵向和横向布局.所以我不得不在layout文件夹中创建一个login.xml,在layout-land文件夹中创建另一个login.xml.为了支持方向更改,我在LoginActivity类中覆盖了onConfigurationChanged()方法.在这个方法中,我调用setContentView(R.layout.login)方法,以便将适当的login.xml设置为每个方向的布局.

毕竟我在我的清单文件中定义了以下内容:

android:configChanges="orientation|keyboardHidden"
Run Code Online (Sandbox Code Playgroud)

但我仍然面临着着名的老问题.如果Edittext中有任何文本并且设备已旋转,则该文本将丢失.我不想丢失那个文字.有可能吗?我已经读过我们可以使用onSaveInstanceState(Bundle savedInstanceState)方法来做到这一点,我甚至尝试了它,但它对我不起作用.请帮忙.提前致谢.

android orientation onconfigurationchanged android-edittext

2
推荐指数
1
解决办法
5489
查看次数

为什么Tabbar在重叠按钮时显示白色阴影?

我正面临这个奇怪的问题.在我的应用程序中,我在屏幕底部有一个标签栏.在这个屏幕中,我有一些EditTexts和Buttons.

现在我的问题是,如果应用程序在小型设备上运行,当tabbar以某种方式显示重叠按钮时,则会在tabbar上显示一个白色阴影(如附图所示).如果标签栏没有与任何小部件重叠,则不会显示此阴影.

我只是想知道这是android的自然行为还是我可以摆脱它.请帮忙.提前致谢.

fulltab

android button tabbar

1
推荐指数
1
解决办法
544
查看次数