我有一个登录屏幕,其中包含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提前.
我正在使用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) 我正在创建一个提供聊天功能的应用程序.屏幕上有一个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中创建一个实现聊天功能的应用程序.我有2种聊天气泡 - 其他用户为蓝色,登录用户为橙色.我正在使用Nine-patch图像来处理这些气泡,因为气泡可以被拉伸.
蓝色气泡中的文字显示正常 - 位于中间(如下图所示).但是橙色气泡中的文字显示在图像上边缘的一些垂直间隙之后.我无法弄清楚为什么会这样.两个气泡都具有相同的属性,并且是按照相同的步骤创建的.请帮忙.提前致谢.
这是橙色聊天泡泡:

伙计们,我完成了它.我一直在谷歌搜索过去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)方法来做到这一点,我甚至尝试了它,但它对我不起作用.请帮忙.提前致谢.
我正面临这个奇怪的问题.在我的应用程序中,我在屏幕底部有一个标签栏.在这个屏幕中,我有一些EditTexts和Buttons.
现在我的问题是,如果应用程序在小型设备上运行,当tabbar以某种方式显示重叠按钮时,则会在tabbar上显示一个白色阴影(如附图所示).如果标签栏没有与任何小部件重叠,则不会显示此阴影.
我只是想知道这是android的自然行为还是我可以摆脱它.请帮忙.提前致谢.
