-3

我遇到了另一个棘手的小问题。

我正在编写一个带有选项卡的应用程序,但我在屏幕顶部有一个文本框(EditText),我希望能够从任何选项卡接收文本数据。由于每个选项卡都有自己的活动和布局,因此很难实现。

我希望能够使用:

editText1.setText("Hello World");//sample text

从任何选项卡/活动。

有谁知道如何从一个布局公开一个文本框并能够接收文本?

我正在使用 TabActivity,是的,我知道它已被弃用,但由于这是我的第一个带有标签的应用程序,它比 Fragments 更容易学习。下次我会尝试它们,除非它们是我问题的答案,在这种情况下我有很多重新编码要做!

好的,新的部分。

package com.epsilonitsystems.epecsandroid;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TabHost.TabSpec;
import android.view.Menu;
import android.speech.tts.TextToSpeech;

public class MainActivity extends TabActivity {

public EditText editText1;  


@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText1 = (EditText) findViewById(R.id.editText1); 
    TabHost tabHost = getTabHost();

    // Tab for Core
    TabSpec corespec = tabHost.newTabSpec("Core");
    corespec.setIndicator("", getResources().getDrawable(R.drawable.ic_i));
    Intent coreIntent = new Intent(this, CoreActivity.class);
    corespec.setContent(coreIntent);

    // Tab for Drink
    TabSpec drinkspec = tabHost.newTabSpec("Drink");
    drinkspec.setIndicator("", getResources().getDrawable(R.drawable.ic_drink));
    Intent drinkIntent = new Intent(this, DrinkActivity.class);
    drinkspec.setContent(drinkIntent);


    // Adding all TabSpec to TabHost
    tabHost.addTab(corespec); // Adding Core tab    
    tabHost.addTab(drinkspec); // Adding Drink tab  
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

}

那是主要活动,我将只展示核心活动,因为当我让它工作时它们都是一样的。

package com.epsilonitsystems.epecsandroid;


import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.speech.tts.TextToSpeech;

public class CoreActivity extends Activity {

private TextToSpeech mTts;
// This code can be any value you want, its just a checksum.
private static final int MY_DATA_CHECK_CODE = 1234;

EditText editText1;
String Spch,Str;
ImageButton imageButton1,imageButton2;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.core_layout);

    //button1 = (Button) findViewById(R.id.button1);
    editText1 = (EditText) findViewById(R.id.editText1);
    mTts = new TextToSpeech(this, null);

}

public void onimageButton1Click(View view) {
//mTts.speak("I",TextToSpeech.QUEUE_FLUSH,null);
//Spch=editText1.toString();
//Spch=Spch+"I ";

    editText1.setText("Hello World");
}


}//Activity End

由于我还是新用户,所以我无法发布屏幕截图,抱歉。

请问有什么想法吗?

4

1 回答 1

0

加里,

您正在寻找的可能是如何在不同的活动之间共享数据。您可以通过多种方式做到这一点,但最干净的是使用启动新 Activity 的 Intent。有了这个,您可以通过 Intent.putXXXXXX 方法设置额外的数据。你可以使用 Intent.putExtra("my_private_key", mTextVar); 并使用 this.getIntent().getStringExtra("my_private_key"); 在您的其他活动中获取它

附言。尽管从 TabActivity 开始看起来很诱人,但您实际上通过一个糟糕的开始和学习您不应该再使用的课程来让自己变得更加困难。我建议您选择一些好的片段教程,一旦正确解释,它们将同样简单。您应该查看每个示例http://www.vogella.com/android.html

于 2013-01-10T14:24:33.750 回答