gpt4 book ai didi

android - 使用 Fragment 在 Android 中启动画面

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:11 25 4
gpt4 key购买 nike

我正在设计一个 android 应用程序,我需要在其中添加我的应用程序的启动画面。通常我以前只使用 Activity到目前为止,对于这个项目,ADT 正在创建 Fragment还有 Activity .

现在我很困惑我应该在哪里编写 timerTask 的代码和 Timer安排任务在 onCreate 中执行的 ActivityonCreateView方法还是其他?

目前我是这样写的,但我不确定是对还是错。

public class SplashActivity extends Activity {

// using timer to do operation at certain 3 seconds after.
private Timer mTimer;
private TimerTask mTimerTask;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();

// execute this after 3 seconds
mTimerTask = new TimerTask() {

@Override
public void run() {
// start the activity (Login/Home) depends on the login
// status
}
};

mTimer = new Timer();
mTimer.schedule(mTimerTask, 3000);

}
}

/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_splash,
container, false);
return rootView;
}
}

@Override
public void onBackPressed() {
super.onBackPressed();
// cancel the timer if user has pressed the back button to abort it.
if(mTimer !=null)
mTimer.cancel();
}

}

最佳答案

我应该在哪里编写 timerTask 和 Timer 的代码来安排任务在 Activity 的 onCreate 或 onCreateView 方法或其他方法中执行?

创建另一个 Activity 并编写您的计时器任务代码,然后导航到您的家庭 Activity 。执行如下所示的操作,

public class MySplash extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);

new Handler().postDelayed(new Runnable() {
@Override
public void run()
{
startActivity(new Intent(MySplash.this,SplashActivity.class));
finish();
}
}, 3000);

}
}

然后更改您的主屏幕代码,如下所示,您只需要显示您的 fragment 类。

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

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}

不要忘记在 list 文件中添加 MySplash 并使其成为启动器 Activity

注意:根据其他答案,除非非常需要,否则不建议使用启动画面。

引用,

http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/

关于android - 使用 Fragment 在 Android 中启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com