当前位置: 首页 > 知识库问答 >
问题:

Android重用不同数据的活动

莫誉
2023-03-14

嗨,我正在开发一个android应用程序,有两个实际上相同的活动,但加载不同的数据。我目前有两个活动有很多重复的代码,我觉得我可以通过只使用一个活动来优化它。

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.right_hearing_test);

    String topHtml = this.getString(R.string.top_content);
    String bottomHtml = this.getString(R.string.bottom_content);

    View infoButton = findViewById(R.id.info_button);
    infoButton.setVisibility(View.VISIBLE);

    TextView titleText = (TextView) findViewById(R.id.title_text);
    titleText.setText(R.string.Hearing_Test);

    mScrollButton = (ScrollView) findViewById(R.id.scroll_view);

    topContent = (WebView) findViewById(R.id.top_content);
    topContent.setBackgroundColor(0);

    bottomContent = (WebView) findViewById(R.id.bottom_content);
    bottomContent.setBackgroundColor(0);

    activityHelper = new ActivityHelper(this);

    topContent.loadUrl("file:///android_asset/html/" + topHtml);
    bottomContent.loadUrl("file:///android_asset/html/" + bottomHtml);

    getScreenSize();
    getMargins();

    setResult(RESULT_OK);
}
    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.left_hearing_test);

    View infoButton = findViewById(R.id.info_button);
    infoButton.setVisibility(View.VISIBLE);

    mScrollButton = (ScrollView) findViewById(R.id.scroll_view);

    topContent = (WebView) findViewById(R.id.top_content);
    topContent.setBackgroundColor(0);

    bottomContent = (WebView) findViewById(R.id.bottom_content);
    bottomContent.setBackgroundColor(0);

    String topHtml = this.getString(R.string.switch_file);
    String bottomHtml = this.getString(R.string.bottom_content);

    activityHelper = new ActivityHelper(this);

    topContent.loadUrl("file:///android_asset/html/" + topHtml);
    bottomContent.loadUrl("file:///android_asset/html/" + bottomHtml);

    getScreenSize();
    getMargins();
}

共有1个答案

束福
2023-03-14

只需保留一个标志来决定选择哪个选项。贝娄会给你一个如何控制它的主意。

您可以控制该标志unisg getStringExtra(),例如putStringExtra()。您将从FromActivity类开始您的活动。

FromActivity.java

.......    
Intent i = new Intent(FromActivity.this,YourActivity.class);
i.putExtra("Flag","optionone");
startActivity(i);
.......

..
Intent i = new Intent(FromActivity.this,YourActivity.class);
i.putExtra("Flag","optiontwo");
startActivity(i);
...

YourActivity.java

        @Override
        public void onCreate(Bundle savedInstanceState) {

        ......
        ..
        ..
        String flag = String.valueOf(getIntent().getStringExtra("Flag"));

        if(flag.equalsIgnoreCase("optionone")){

            String topHtml = this.getString(R.string.top_content);
            String bottomHtml = this.getString(R.string.bottom_content);

            TextView titleText = (TextView) findViewById(R.id.title_text);
            titleText.setText(R.string.Hearing_Test);


        }else if(flag.equalsIgnoreCase("optiontwo")){
            String topHtml = this.getString(R.string.top_content);
            String bottomHtml = this.getString(R.string.bottom_content);
        }else{
    }
        .....
        ...
        ...
        if(flag.equalsIgnoreCase("optionone")){
            setResult(RESULT_OK);
        }
        ....
}
 类似资料:
  • 问题内容: 示例ViewModel: 主要活动: 我想调用第二个活动并使MainActivity接收更改。那可能吗? 问题答案: 调用时,您实际上创建/保留了绑定到的,因此不同的Activity具有不同的特性,并且每个Activity 使用给定的工厂创建a的不同实例,因此您不能在不同的s中具有相同的a实例。 但是,您可以通过传递自定义ViewModel工厂的单个实例(充当单例工厂)来实现此目的,因

  • 我想将数据从活动发送到片段,但我提交的片段中的数据为空。我不知道为什么。这是我发送数据并调用片段时的代码。 这是代码,当我检索数据发送: 有人能帮忙吗?

  • 我有两种不同的活动。主要活动,联系人列表 在联系人详细信息 Intent Intent=新的Intent(getBaseContext(),MainActivity)。类);意图putExtra(“联系人编号”,联系人编号);星触觉(意图) 在MainActivity OnResume方法中 字符串数据=getIntent()。getExtras()。getString(“keyName”); a

  • 我想根据活动的Spring配置文件有不同的Spring配置。如果我用--spring.profiles.active=blabla启动jar,我使用一个配置文件,如果start参数中没有配置文件,我使用另一个配置文件。现在我可以使用blabla配置文件,但是如果我在没有配置文件的情况下启动jar,它会同时使用两个配置文件。 默认配置: Blabla config: 现在: java-jar app

  • 我有一个应用程序具有这种转换: 输入后,我必须检查一个标志。然后我必须将其作为意图(让我们说)传递给。在中做了一些事情后,它会在按下按钮后返回。我所做的只是再次传递值为true的,然后再次启动活动C。所以发生的是它创建了另一个活动C。 我想做的是,我不必启动一个新的活动C,只需调用super即可使用以前的C。onBackPressed()。但我无法传递intentX的新值。有没有其他方法来实现我想

  • 我已经做了3个活动第一个是主要的,并把2个按钮通过意图传递给其他页面。我在第2页和第3页之间做了一个编辑文本的意图,效果很好,但如果我转到主要活动并选择从按钮转到第3页,它就会停止,O必须通过意图转到第2页,然后是第3页。。。第2页和第3页的主要活动代码是