我有一个listview,在main.xml布局中有两个按钮.点击一个按钮,我动态创建一个textview,并将其添加到屏幕底部以确认用户交互.当用户单击第二个按钮(确认按钮)时,我需要将该文本添加到listview.为了支持横向模式,我在layout-land文件夹中有相同的布局文件.当我点击第一个按钮时,它会创建一个包含一些文本的文本视图,并在屏幕底部添加.现在,如果更改设备方向,则它将加载横向main.xml,并且活动将再次重新创建.所以我的textview正在崩溃.如何防止在方向上重新开展活动.(但它应该选择其他布局文件).
有些事情我现在还不太明白.
我的主要活动类创建一个Service,它创建一个等待TCP连接的新线程.一旦进入,它将开始一项新活动:
Intent dialogIntent = new Intent(getBaseContext(), VoIPCall.class);
dialogIntent.putExtra("inetAddress", clientSocket.getInetAddress());
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(dialogIntent);
Run Code Online (Sandbox Code Playgroud)
之后,onCreate()该类的方法运行.它将创建2个线程:一个记录并发送数据,另一个接收和播放数据.那些线程有一个永远的while循环.
出于某种原因,我注意到onCreate()最后一个类的内容再次被调用,这使我的程序崩溃.我不明白为什么它再次被调用,因为只有2个线程正在运行,没有用户交互.文档说:"首次创建活动时调用.".该活动已在运行,我不是想创建它.
有人可以解释一下这种行为吗?
在我的应用程序中,我使用服务与我们的服务器进行通信.该服务生成多个消息队列线程来处理具有不同优先级的任务.
这个模型已经使用了大约一年没有大问题.但是,最近,我发现onCreate我的服务类被多次调用了一段时间.onDestroy从不在两次onCreate通话之间调用.因此,我没有机会杀死现有的线程.一旦发生此行为,服务内部就会出现重复的线程.
我唯一改变的是运行服务,因为前台服务是用户登录应用程序.我想知道前台服务是否会导致问题.
有任何想法吗?
可能重复:
如何保存Android应用程序的状态?
我是Java和Android的新手,并且正在构建一些小项目来学习.我做了一个赚钱跟踪应用程序,允许用户输入值,它只是继续减去它.一切正常,但我希望在关闭并重新打开应用程序时保存或缓存值.阅读,我发现也许OnPause可以做到这一点,但仍然没有100%理解它.
任何人都可以推荐如何做到这一点以及如何申请我的代码?
非常感谢你的帮助!!
package ps.age.sl;
import java.text.NumberFormat;
import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
public class MoneyTrackerActivity extends Activity {
/** Called when the activity is first created. */
ImageButton subtract;
EditText startingmoney,submoney, endmoney, tracker;
Locale currentLocale = Locale.getDefault();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// startingmoney = (EditText) findViewById (R.id.firstmoney);
// submoney = (EditText) findViewById (R.id.submoney);
// subtract = (ImageButton) findViewById (R.id.subbutton);
// endmoney = (EditText) …Run Code Online (Sandbox Code Playgroud) 当用户点击我的应用程序中的图标时,我希望应用程序首先检查设备是否已连接到互联网,然后根据收到的结果执行某些操作(因为知道它只是弹出一个对话框,通知设备是否是是否连接).所以我写了这段代码:
public class MainActivity extends Activity {
// SOME CONSTANTS WILL BE DEFINED HERE
AlertDialog.Builder builder = new AlertDialog.Builder(this);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.icoMyIcon).setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
if (isNetworkConnected()) {
builder.setMessage("Internet connected!").setCancelable(false)
.setPositiveButton("OK", null);
builder.create().show();
} else {
builder.setMessage("Internet isn\'t connected!")
.setCancelable(false)
.setPositiveButton("OK", null);
builder.create().show();
}
}
};
// Check if the device is connected to the Internet
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) …Run Code Online (Sandbox Code Playgroud) 我已经创建AbstractActivity并AbstractFormActivity删除了一些样板代码,它们的内容可能与问题无关,但无论如何我都会发布它,也许我误解了一些东西,它们是:
public abstract class AbstractActivity extends ActionBarActivity {
protected ObjectGraph graph;
@Inject
public Bus bus;
@Inject
public App app;
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(getLayout());
setupInjection();
}
public void setupInjection() {
graph = ((App) getApplication()).createScopedGraph(getModule());
graph.inject(this);
bus.register(this);
ButterKnife.inject(this);
}
protected abstract Object getModule();
protected abstract int getLayout();
}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class AbstractFormActivity<T extends EntidadeBase> extends AbstractActivity implements Form<T> {
protected T entity;
protected Map<View, Boolean> formValidations;
protected AbstractFormActivity() {
formValidations …Run Code Online (Sandbox Code Playgroud) 我有一个相当简单的应用程序与2"布局"使用SharedPreferences.
Main有一个textView,它使用来自SharedPreferences的getString.还有一个用于打开设置的按钮.
设置有一个微调器和一个保存到SharedPreferences的按钮.
应用程序加载时,textView会更新,因为我在onCreate(Bundle savedInstanceState)中调用setText()
当我打开设置并更新SharedPreferences时,我使用Back按钮返回Main.
由于我在onCreate()中调用setText(),因此在退出应用程序并再次将应用程序打开到main之前,textView不会再次更新.
从"设置"返回后,我需要使用哪种方法来更新textView?
我的请求类似于iOS的viewWillAppear().
我的Android应用程序出了问题.我有一个按钮和事件关联,但是当我第一次点击时出现错误
"跨度不能为零长度".
.但是当我第二次点击时,事件onclick运行良好..看看我的java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button selectAltitude = (Button) findViewById(R.id.buttonAltitude1);
final Button selectAltitude2 = (Button) findViewById(R.id.buttonAltitude2);
selectAltitude2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
String tempAlt = selectAltitude2.getText().toString();
selectAltitude2.setText(selectAltitude.getText().toString());
selectAltitude.setText(tempAlt);
}
});
}
Run Code Online (Sandbox Code Playgroud)
带有两个按钮的xml代码(发生了不推荐的警告):
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/black">
<Button
android:id="@+id/buttonAltitude1"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="39dp"
android:layout_height="42dp"
android:layout_marginLeft="250dp"
android:layout_x="257dp"
android:layout_y="419dp"
android:background="@drawable/drawable1"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:includeFontPadding="false"
android:linksClickable="true"
android:minHeight="10dp"
android:minWidth="64dp"
android:paddingLeft="10dp"
android:paddingRight="5dp"
android:scrollHorizontally="true"
android:text="@string/button_meters"
android:textColor="@android:color/black"
android:textSize="22sp"
android:textStyle="bold" />
<Button
android:id="@+id/buttonAltitude2" …Run Code Online (Sandbox Code Playgroud) 当我的应用程序在"顶部"运行时锁定屏幕时,系统几乎立即调用onCreate(屏幕仍为黑色).这种破坏性行为可能是什么原因?
我有时会看到人们使用这种Activity.onAttachedToWindow方法,但我个人从未使用过它.在阅读它的文档时,它在我看来就像它几乎一样onStart().
我假设的一件事是:
onAttachedToWindow在onCreate()
onStop之后调用之前调用.
我对这个假设是对的吗?什么是两者的代表什么,你什么时候使用哪个?