相关疑难解决方法(0)

OnLowMemory被调用

我正在做一个访问gprs的应用程序.当用户启动另一个使用gprs的应用程序时,我也面临着问题,如谷歌地图.它拥有自己的堆内存,在地图应用程序上执行某些操作后,它会调用我服务的OnLowMemory.我的ui也在背景中丧生.我没有得到任何适当的教程haw我可以在onLowMemory中杀死它时启动我的应用程序,或者是否有任何其他方法来处理它.

提前致谢.

java android

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

保存活动状态

我有两个活动A,B.现在从A i按下按钮(使用startActivity())调用B ,然后按返回键返回到A. 现在当我再次按下按钮转到B时,会调用新的活动(如预期的那样).

现在有人能告诉我如何显示旧的B状态吗?

我已经阅读了这篇文章 使用保存实例状态保存Android活动状态,但无法帮助自己:(

public class B extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);

    if(savedInstanceState!=null){
        EditText editText=(EditText)findViewById(R.id.editText1);
        editText.setText(savedInstanceState.getString("EditBox"));
    }
}

@Override
protected void onSaveInstanceState(Bundle onSaveInstanceState) {
    System.out.println("B.onSaveInstanceState()");
    super.onSaveInstanceState(onSaveInstanceState);
    onSaveInstanceState.putString("EditBox","Hello");
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    System.out.println("B.onRestoreInstanceState()");
    super.onRestoreInstanceState(savedInstanceState);
    EditText editText=(EditText)findViewById(R.id.editText1);
    editText.setText(savedInstanceState.getString("EditBox"));
}}
Run Code Online (Sandbox Code Playgroud)

我的A级

public class A extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button=(Button)findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() …
Run Code Online (Sandbox Code Playgroud)

android workflow-activity android-activity

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

在this.finish()之后不会调用onDestroy()

我想知道为什么具有2.1-update1的摩托罗拉里程碑与仿真器或Nexus One的行为不同.我试图退出我的应用程序:

@Override
protected void onPause() {
    if(mayDestroyActivity) this.finish();
    super.onPause();
}
Run Code Online (Sandbox Code Playgroud)

这适用于模拟器或Nexus One.onDestroy()onPause()和之后立即被称为onStop.但不是里程碑.而是onDestroy()在启动另一个Activity时调用.它在Manifest中的部分看起来像这样:

<activity android:name=".MyActivity"  
    android:configChanges="orientation|keyboardHidden"  
 android:label="@string/questionnaire_item"
 android:launchMode="singleInstance"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
 android:windowSoftInputMode="adjustPan">
 <intent-filter>
  <category android:name="android.intent.category.OPENABLE" />
 </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

有人对此有暗示吗?我的应用程序取决于正确退出,因为我保存了所有进度onDestroy()

谢谢,
斯蒂夫

android milestone

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

捕获EditText失去焦点

我是一名长期,自学成才的业余VB程序员,现在正在尝试自学Java和Android.我这样说,所以你会知道我不会说好语言,而且对这两种追求都是非常新的.

我开发了一个Android表单,其中包含一系列EditText框,每个框的内容都要在用户填写后保存到数组中.如果用户按下Enter键,我已经想出了如何做到这一点.但是,人们实际上并没有这样做:他们点击框,键入,然后单击下一个元素.

我VB,我可以为lostfocus事件编写代码.但我在Java中找不到类似的方法.

最后一个问题:是否有一种方法可以捕获EditText失去焦点的时间,因此我可以在不依赖Enter键的情况下保存该类型的类型数据?

public boolean onKey(View v, int keyCode, KeyEvent event) { 
    if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){ 
        Editable wasted=edittext_asset.getText(); 
        vehdata[vehNo][Integer.parseInt((String) edittext_asset.getTag())]=wasted.toString(); 
        return true; 
    } 
    return false; 
} 
Run Code Online (Sandbox Code Playgroud)

请记住,我对此很新,我常常不确定在哪里放置代码片段以使它们工作(新文件?oncreate方法?谁知道).您可以给予我任何指导,我将非常感激和永远感激.

java android android-edittext

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

Android:在屏幕方向更改时保存应用程序状态

在发布此问题之前,我已经看过以下链接

http://www.devx.com/wireless/Article/40792/1954

使用"保存实例状态"保存Android活动状态

http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html

如果状态是由我的类组成的,如何在Android中的方向更改期间保存状态?

我没有得到如何覆盖以下功能:

@Override
    public Object onRetainNonConfigurationInstance() {
        return someExpensiveObject;
    }
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我有一个editext可见的布局,当第一个editext的数据验证为true时,其他editext可见.我已将所有其他editextes和textviews的可见性设置为false,并在验证后使它们可见.

因此,在我的活动中,如果更改了屏幕方向,则所有项目都将变为android:visibility="false"不可见.

我也知道当我们的活动屏幕方向改变时,它调用onStop()后跟onDestroy(),然后通过调用onCreate()再次启动一个新活动

这是原因..但我没有得到如何解决它..

在这里您可以看到我的应用程序的屏幕截图:

在此输入图像描述 在此图像中,所有字段都被加载,而在另一个图像中,当屏幕方向变为横向时,它们都消失了

在此输入图像描述

任何教程或代码片段的链接都会非常值得注意.

而且还当我的应用程序崩溃进度对话框显示了,我试图改变屏幕orientation.How来处理这个?

谢谢

android screen-orientation android-screen

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

配置更改后的notifyDataSetChanged

我在更改设备配置(更改语言,方向等)后进行了一些测试,我注意到在此之后,方法"notifyDataSetChanged()"无法正常工作.

动作示例:

我每次执行删除,保存等操作时都会调用updateList().用户单击删除按钮,会显示DialogFragment,"您确定要删除吗?",当我更改方向时,或者语言或设备的任何配置,然后在对话框上单击"是",数据将被删除,但列表不会更新.我需要退出活动,然后回去查看更改.

BookAdapter:

public void updateList(ArrayList<Book> books) {
     bookList = books;
     notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

在配置更改后,我该怎么做才能使它工作?

编辑:

BookAdapter构造函数:

public BookAdapter(Context c, ArrayList<Book> books) {
    context = c;
    bookList = books
    bookDAO = BookDAO.getInstance(context);
}
Run Code Online (Sandbox Code Playgroud)

BookFragment:

public class BookFragment extends Fragment {

    private BookDAO bookDAO;

    private BookAdapter bookAdapter;

    private ListView listBook;

    private View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        bookDAO = bookDAO.getInstance(getActivity());

        view = inflater.inflate(R.layout.book_tab, container, false);

        ArrayList<Book> listBook = null;

        try {
            llistBook = bookDAO.getAll();
        } …
Run Code Online (Sandbox Code Playgroud)

android android-adapter

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

更改屏幕方向时EditText中的值错误

我糊涂了.

我有一个布局(LinearLayout)持有TextView和EditText.在我的代码的某处,我创建(以编程方式)RelativeLayout并将其中的几个LinearLayout推入其中.对于其中的每一个,我为TextView和EditText设置ID和值.

问题是当我改变屏幕方向时.所有EditText控件都获得相同的值(来自上一个EditText).如果我设置断点一切似乎都没问题.我甚至在调用setContentView之前检查了所有元素,并且所有值看起来都很好.

任何的想法?

这是代码的相关部分:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  csWgs84 = getCoordinateSystem();
  wgs84C = getCoordinates();
  sView = new ScrollView(this);
  layout = getLayoutInflater().inflate(R.layout.location_calculator, null);

  View control1 = getLayoutInflater().inflate(R.layout.text_edit, null);
  control1.setId(1);
  TextView title1 = (TextView) control1.findViewById(R.id.title);
  title1.setText(csWgs84.axisInfo.yAxisAbbreaviation + " [°] :");
  EditText value1 = (EditText) control1.findViewById(R.id.input);
  value1.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
  value1.setText(cutValue(RSimpleFormatter.formatNumber(wgs84C.y, 1, 7, '.'), 12));
  RelativeLayout.LayoutParams viewLayoutParams1 = new RelativeLayout.LayoutParams
    (RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT );
      viewLayoutParams1.addRule(RelativeLayout.BELOW, group.getId());
  ((RelativeLayout) layout).addView(control1, viewLayoutParams1);

  View control2 = getLayoutInflater().inflate(R.layout.text_edit, null);
  control2.setId(2);
  TextView title2 = (TextView) control2.findViewById(R.id.title);
  title2.setText(csWgs84.axisInfo.xAxisAbbreaviation + …
Run Code Online (Sandbox Code Playgroud)

android android-edittext

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

在方向更改时未调用onConfigurationChanged()

我在SO上看到了一些相关问题,但我无法解决我的问题.我为PORTRAIT和LANDSCAPE模式创建了单独的布局.

我已经修改了AndroidManifest.xml文件以进行相应的方向更改,但是onConfigurationChanged()当我在活动中实现它时,它不起作用.

现在问题出在layout.addView(graphView, lp);onCreate().我在GraphView课堂上写了绝对的硬编码值.

所以它完全适用于PORTRAIT模式,但是当我切换到LANDSCAPE模式时,graphView没有正确放置.

为了解决这个问题,我创建了GraphViewLand专门为LANDSCAPE模式编码的类.但它并没有被召唤出来onConfigurationChanged().

其余的布局完美无缺,因为我main.xml为每个方向创建了单独的文件.但由于graphView是以编程方式创建的,因此未正确放置.

我在这里做错了吗?

我刚从这里读到这个:

对于任何类型的配置更改,您说您在那里处理,您将收到对当前活动的onConfigurationChanged(配置)方法的调用,而不是重新启动.但是,如果配置更改涉及您未处理的任何内容,则仍将重新启动活动并且不会调用onConfigurationChanged(Configuration).

onCreate()方法

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    init();

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.MainLayout);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
    lp.addRule(RelativeLayout.ALIGN_TOP, btnindex.getId());

    GraphView graphView = new GraphView(this, values, "CurrentGraph",
                horlabels, verlabels);
    layout.addView(graphView, lp);
    }
Run Code Online (Sandbox Code Playgroud)

onConfigurationChanged()方法

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", …
Run Code Online (Sandbox Code Playgroud)

java android orientation relativelayout onconfigurationchanged

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

屏幕旋转期间处理状态变化的最佳实践

我有一个非常简单的程序,带有微调器和toggleButton.当按钮打开时,我禁用微调器,并在我关闭时启用.我遇到一个问题,意味着在屏幕旋转期间重新启用微调器.我理解这是由于活动状态的改变和onCreate被再次调用,但我没有在这样的实例中遇到关于视图状态的最佳实践的确定答案.

注意:我发现的与此相关的最相关的SO问题如下.所有3都讨论了如何处理状态更改(onPause/OnResume与overriding onSaveInstanceState),但似乎没有人明白哪个是这样简单的首选选项.

旋转屏幕时丢失数据

使用"保存实例状态"保存Android活动状态

Android CheckBox - 屏幕旋转后恢复状态

android

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

Whatsapp如何立即保存聊天记录,而不是备份

我的问题是关于Whatsapp在聊天时保存对话的方式,所以,如果我关闭whatsapp并打开它,我最后的对话和尚未备份的消息会出现......即使我发了一封信(一个字符) ),关闭应用程序并打开它,我会找到这封信!! whatsapp在哪里保存这些对话.并恢复他们......

我们不讨论数据库备份.

android whatsapp

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