然后在我的应用程序中依次有103个活动 SplashActivity - >菜单---> Q_001 ---> Q_002 ......(......)..... Q_finish。 在每个活动中,我都有一个退出应用程序的按钮(如主页按钮),以及一个返回菜单的按钮。 现在我希望如果用户杀死应用程序,并在其他时间打开它返回正在使用的活动,
我知道我必须尝试改变SpalshActivity你正在做的最后一项活动,如果你没有进行任何活动来继续他的工作 这是SplashActivity的代码:
package org.somename;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle TravisIsAwesome) {
super.onCreate(TravisIsAwesome);
setContentView(R.layout.splash);
Thread logoTimer = new Thread (){
@Override
public void run(){
try{
sleep(500);
Intent menuIntent = new Intent("org.somename.MENU");
startActivity(menuIntent);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
finish();
}
}
};
logoTimer.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
一直说我不关心保存活动菜单,而是从“Q_001”开始并结束活动“Q_finish”的所有活动。我尝试使用新的这个方法:我在上一个问题中提出过,我已经实现了这个代码:
package org.somename;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle TravisIsAwesome) {
super.onCreate(TravisIsAwesome);
setContentView(R.layout.splash);
int last_activity = getLastActivityIdFromSharedPreferences();
if (last_activity == 1)
{
this.startActivity(new Intent(this, Q_001.class));
finish();
}
int last_activity2 = getLastActivityIdFromSharedPreferences2();
if (last_activity2 == 2)
{
this.startActivity(new Intent(this, Q_002.class));
finish();
}
Thread logoTimer = new Thread (){
@Override
public void run(){
try{
sleep(500);
Intent menuIntent = new Intent("org.somename.MENU");
startActivity(menuIntent);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
finish();
}
}
};
logoTimer.start();
}
private int getLastActivityIdFromSharedPreferences2() {
// TODO Auto-generated method stub
return 2;
}
private int getLastActivityIdFromSharedPreferences() {
// TODO Auto-generated method stub
return 1;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
但它不是SplahActivity的一部分,并且不会返回执行的Activity。 直接进入菜单,SplahActivity为空白页
提前感谢
答案 0 :(得分:0)
我同意@ 2Dee。
我认为首先想到的是你并没有真正学习当前的Android开发。我想大多数人都会选择一项活动(如果你真的需要一台)和第二项活动来保持100个按钮。这100个按钮将保存在viewpager中。一开始要理解起来有点复杂,但在我看来,这是要走的路。视图寻呼机将循环使用,效率高,是一种强大的工具。
但也许你正在做学校运动?
编辑:我看到两种方式,可能有人可以找到更好的方法。
编辑2:
在Splash Activity中,您检索整数。在主要活动(持有问题和按钮的那个)中,您写问题编号。
这就是这样的:
启动活动:
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(LAST_QUESTION, 0);
int number = settings.getInt("last_question", 1); // default value is to start again
goToQuestionNumber(number); // you better call this in onResume().
}
在onClik()
启动的退出方法中 SharedPreferences settings = getSharedPreferences(LAST_QUESTION, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("last_question", currentQuestionNumberThatYouShouldKnow);
答案 1 :(得分:0)
好吧,正如我想的那样,我相信您需要重新考虑您应用的架构:)
制作一个活动和一个片段。 Activity将负责在视图中切换Fragment并创建它们。它还将引用webviews所需的URL。
这就是我这样做的方式(但可能会对你的代码进行彻底的重构 - 如果你考虑的话,这不是一个糟糕的练习):
在活动中:
// declare your urls in the res/values/strings.xml and use them here.
private int[] webViewsUrls = {R.string.url1, R.string.url2, ...};
在Activity的onCreate:
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
int activityIndex = prefs.getInt("lastActivityIndex", 0);
QuestionFragment fragment = new QuestionFragment();
Bundle bundle = new Bundle();
bundle.putInt("INDEX", activityIndex);
bundle.putString("WEBVIEW_URL", webViewsUrls[activityIndex]);
fragment.setArguments(bundle);
// Show fragment
要在Activity布局中向ViewGroup添加新片段(如果您不使用ViewPager,而是使用按钮更改视图中的问题):
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
// create you fragment using the method I give above
fragmentTransaction.add(R.id.fragment_container_in_activity_layout, fragment, STRING_FRAGMENT_TAG);
fragmentTransaction.commit();
要替换视图中已有的片段,请使用replace方法而不是添加。
单击按钮或在ViewPager中,更改视图中的片段,并且在启动片段时不要忘记在SharedPreferences中保存activityIndex的新值。
我相信@Poutrathor的建议非常好,如果您想使用ViewPager,我可以参考我昨天给出的this answer,我认为这比满足您的要求要好100+以上。