将EditText值从活动传递到Android Tabhost中的选项卡

时间:2014-08-02 15:35:46

标签: java android android-tabhost

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

要访问这两个标签,我必须先登录。我想要实现的是我想传递"用户名"的价值。登录活动中的文本字段到"我的数据" (第二个选项卡)选项卡。我非常困惑,因为我必须点击标签"我的数据"打开它,我不知道如何将一个文本字段值从Login类传递到选项卡("我的数据")。

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

我已经在论坛中搜索过但没有找到合适的解决方案。 这是我在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);
}
}

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

1 个答案:

答案 0 :(得分:0)

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

诀窍是我不需要传递文本字段值(用作用户名)。我只需要通过Login类在数据库中选择用户的id,并通过intent传递给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。

希望它有所帮助, 谢谢