【问题标题】:Passing EditText Value from an Activity to a Tab in Android Tabhost将 EditText 值从 Activity 传递到 Android Tabhost 中的选项卡
【发布时间】:2014-08-02 15:35:45
【问题描述】:

我的 tabhost 包含两个选项卡(每个选项卡都是一个活动):“添加新数据”和“我的数据”。首先显示的默认选项卡是“添加新数据”,因为它是 #1 选项卡。

要访问这两个选项卡,我必须先登录。我想要实现的是我想将登录活动中“用户名”文本字段的值传递到“我的数据”(第二个选项卡)选项卡上。我很困惑,因为我必须单击“我的数据”选项卡才能打开它,而且我不知道如何将文本字段值从登录类传递到选项卡(“我的数据”)。

如果您对如何实现它有任何建议,请告诉我。

我已经搜索了论坛,但没有找到任何合适的解决方案。 这是我在 tabhost 类 (Dashboard.java) 中的代码:

public class Dashboard extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

    TabHost host = getTabHost();
    host.addTab(host.newTabSpec("one").setIndicator("ADD NEW DATA")
            .setContent(new Intent(this, Input_form.class)));
    host.addTab(host.newTabSpec("two").setIndicator("MY DATA")
            .setContent(new Intent(this, MyData.class)));
}

// On Back Button Pressed

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        startActivity(new Intent(this, HomeLogin.class));           
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
}

我可以在上面的代码中修改什么来实现我想要的吗?如果是,请告诉我,或者如果不是通过此代码,请告诉我 谢谢

【问题讨论】:

  • 如果有人有解决方案,我还在努力寻找解决方案,但还没有找到

标签: java android android-tabhost


【解决方案1】:

在阅读了几个教程和示例后,我终于找到了解决此问题的方法。我将在这里分享,以便有类似问题的人可以克服它。

诀窍是我不需要传递文本字段值(本来是用户名)。我只需要通过 Login 类在数据库中选择用户的 id 并将其通过意图传递给 tabhost 类。 要将 id 传递给选项卡,我通过在 Login 类中使用 putExtra 来做到这一点,如下所示:

Intent passId = new Intent(getApplicationContext(), Dashboard.class);
passId.putExtra(ID_USER, iduser);
startActivity(passId);

这是秘密,为了捕捉 Extra,我在我的 tabhost 课程中这样做了(我从这里读到它:How to pass a parameter to a new activity with tab host

这是我在 tabhost 类 (Dashboard.java) 主体中的代码:

    //passing id to tab #1
    Intent passing1 = new Intent();
    Bundle bundle = getIntent().getExtras();
    String id=bundle.get(ID_USER).toString();   
    passing1.putExtra("iduser", id);
    passing1.setClass(this, Input_form.class);

    TabHost host = getTabHost();
    host.addTab(host.newTabSpec("one").setIndicator("ADD NEW DATA")
            .setContent(passing1));
    
    //passing idkont to tab #2
    
    Intent passing2 = new Intent();
    Bundle bundle2=getIntent().getExtras();
    String id2 = bundle2.get(ID_USER).toString();
    passing2.putExtra("iduser", id2);
    passing2.setClass(this, MyData.class);

    
    
    host.addTab(host.newTabSpec("two").setIndicator("MY DATA")
            .setContent(passing2));

然后,在两个选项卡的活动类中,我只需要像往常一样使用 getIntent 和 getStringExtra 捕获额外的内容。 在这两个类中都获得了额外的内容之后,现在我终于可以使用传递给选项卡的数据/变量在我的应用程序中执行更多的 CRUD。

希望对你有帮助, 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多