如何获取上一个活动的名称并将其存储在变量中

时间:2019-06-09 19:35:04

标签: android android-activity

我正在开发一个有很多活动的应用程序。当用户结束与每个活动内容的交互时,它会启动一个称为WellDone的活动!用户可以在其中看到平均课程(这是一门课程)。 100%完成,并且具有下一课的按钮。我想获取先前活动的名称,例如activity_lesson1,activity_lesson2,以在TextView中显示以显示标题。 当课程1结束时,它将启动WellDone!活动,我想在TextView(标题)中设置刚刚学习的课程的名称。

package com.flixarts.ar.**;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class welldone extends AppCompatActivity {

private TextView title;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pantallanextsesion);

        title = (TextView)findViewById(R.id.tituloActivity);

        title.setText() //Here the title of the previous activity that have come from intent
}

}

3 个答案:

答案 0 :(得分:0)

我的印象是,字面问题的答案是“否”-您无法获得上一个活动的名称。但是,可能还有另一种方法可以满足您的需求。

如果这些都是您的活动,为什么不在意图中添加额外的内容(当向前移动时),说明意图来自哪个活动。

然后您可以通过检查多余内容来决定要显示的活动名称,这应该告诉您先前的活动是什么。

答案 1 :(得分:0)

也许您可以使用SharedPreferences,它使您可以轻松地将一个String值保存在一个活动中,并在另一个活动中读取它。在上一个活动中,例如activity_lesson1,您可以覆盖方法onPause(或onDestroy,如果您通过调用finish()方法继续进行下一个活动而完成了活动),则将活动名称保存为String,如下所示:

@Override
public void onPause() {
    super.onPause();
    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("LAST_ACTIVITY_NAME", this.getClass().getSimpleName());
    editor.apply();
}

然后您可以在WellDone活动中读取保存的值,如下所示:

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

    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    String lastActivityName = sharedPref.getString("LAST_ACTIVITY_NAME", "default_value");
    title.setText(lastActivityName);
}

答案 2 :(得分:0)

两种方式传递先前的活动名称

使用意图

FirstActivity

 String TAG=FirstActivity.class.getSimpleName();

 submitBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            name=nameEt.getText().toString();
            mobile_number=mobileEt.getText().toString();
            Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
             intent.putExtra("Last_Activity_Name",TAG);
            startActivity(intent);
        }
    });

SecondActivity

  String lastActivityName;
lastActivityName=getIntent().getStringExtra("Last_Activity_Name");

**使用SharedPreferences **

FirstActivity

  SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("Last_Activity_Name", TAG);
editor.apply();

SecondActivity

SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
String lastActivityName = sharedPref.getString("Last_Activity_Name", 
 "default_value");
title.setText(lastActivityName);