在Android中如何生成一个加载屏幕?

5
问题在于我从另一个Activity过来,当我尝试去新的Activity时,它只会停留在旧的Activity上直到新的Activity显示出来,因此我想让它立即转到新的Activity,并在获取内容时显示加载屏幕。(内容可能来自网站或内部数据库)
我尝试了Android开发网站上的progressDialog,但它并没有起作用,因为Activity在显示任何东西之前就已经完成加载,所以在它显示之前,没有东西需要加载。
2个回答

14

首先启动新活动,然后再调用异步任务文件...这将在关闭旧活动时启动新活动。在新活动的OnCreate方法中调用以下异步任务类:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
            setContentView(your layout here);
            new GetTask(this).execute();

   }
}

class GetTask extends AsyncTask<Object, Void, String> {
    Context context;

    GetTask(Context context, String userid) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mDialog = new ProgressDialog(mContext);
        mDialog.setMessage("Please wait...");
        mDialog.show();
    }

    @Override
    protected String doInBackground(Object... params) {
        // here you can get the details from db or web and fetch it..
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        mDialog.dismiss();
    }
}

这个AsyncTask非常好用,我只是在第一个列表项上应用了一些通用内容,同时它加载并从postExecute中实际生成的内容中检索出来。 - Shant82

0
作为建议,尝试减少第二个活动的onCreate方法中的代码。让它简单到只调用super和设置内容视图即可。这将按照XML中设计的方式呈现UI。
将其余的代码移动到您的onResume方法中。 下一步,如果您有一些要从数据库或外部获取的数据,请尝试使用线程(如何做什么是它)或async task

我使用了几个startActivityForResults,这会导致每次返回时重新加载吗? - Shant82
不需要重新加载活动。如果您使用startActivityForResult,则需要实现onActivityResult(..),并从此处返回上下文。 - Vinay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接