Обработка tabhost на затмение Android

1

У меня есть четыре вида деятельности,

  • Demo_tabActivity.java [основная деятельность]

  • Tabhost.java

Ниже перечислены действия, перечисленные выше tabhost.java

  • Tab_1.java

  • Tab_2.java

Первая активность (Demo_tabActivity.java) содержит кнопку edittext &. Второе (Tabhost.java) действие содержит виджет Tabhost. Третий и четвертый действия содержат текстовые изображения соответственно.

Первое действие будет потреблять веб-службу, получая вход от пользователя и возвращая некоторые данные на первой вкладке (третье действие) табуста (второе действие).

Удовольствие от webservice работает хорошо и отлично возвращает значение,

но проблема заключается в том, что он показывает результат на отдельной странице, а не отображается на табусте.

Demo_tabActivity.java

 public class Demo_tabActivity extends Activity 
 {

private static String NAMESPACE = "http://tempuri.org/";
   private static String METHOD_NAME = "FahrenheitToCelsius";
   private static String SOAP_ACTION = "http://tempuri.org/FahrenheitToCelsius";
   private static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";

   Button btnFar;
   EditText txtFar;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       btnFar = (Button)findViewById(R.id.button1);

       txtFar = (EditText)findViewById(R.id.editText_in);

       btnFar.setOnClickListener(new View.OnClickListener()
       {
       public void onClick(View v)
       {
           String b;

         //Initialize soap request + add parameters
         SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);       

         //Use this to add parameters
         request.addProperty("Fahrenheit",txtFar.getText().toString());

         //Declare the version of the SOAP request
         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

         envelope.setOutputSoapObject(request);
         envelope.dotNet = true;

         try 
         {
             HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

             //this is the actual part that will call the webservice
             androidHttpTransport.call(SOAP_ACTION, envelope);

             // Get the SoapResult from the envelope body.

             SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

             if(result != null)
             {
              //Get the first property and change the label text

                b = result.toString();
                Intent itnt = new Intent(v.getContext(), Tab_1.class);
                itnt.putExtra("gotonextpage", b.toString());
                startActivity(itnt);
             }
             else
             {
           Toast.makeText(getApplicationContext(), "NoResponse",Toast.LENGTH_SHORT).show();
             }
         }
        catch (Exception e)
        {
           e.printStackTrace();
           }
         }
       });
       }

ПРИМЕЧАНИЕ. Я только сомневаюсь, если условие в приведенном выше коде


Tab_1.java

public class Tab_1 extends Activity 
{
TextView tv;
String result;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

Bundle extras = getIntent().getExtras();
if(extras != null)
{   result = extras.getString("gotonextpage");  }
tv = (TextView)findViewById(R.id.textView_main2);
tv.setText(result);
}}

Tabhost.java

 public class Tabhost extends TabActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);


    TabHost tabHost = getTabHost();
    TabHost.TabSpec spec;
    Intent intent;

        intent = new Intent().setClass(this, Tab_1.class);
    spec = tabHost.newTabSpec("first").setIndicator("First").setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, Tab_2.class);
    spec = tabHost.newTabSpec("second").setIndicator("Second").setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
    }
}

Большое спасибо!..

Теги:
android-tabhost

2 ответа

3
Лучший ответ
EDIT:
Demo_tabActivity.java

 public class Demo_tabActivity extends Activity 
 {

private static String NAMESPACE = "http://tempuri.org/";
private static String METHOD_NAME = "FahrenheitToCelsius";
private static String SOAP_ACTION = "http://tempuri.org/FahrenheitToCelsius";
private static String URL = "http://www.w3schools.com/webservices/tempconvert.asmx?
WDL";

  Button btnFar;
EditText txtFar;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 

    btnFar = (Button)findViewById(R.id.button1);

    txtFar = (EditText)findViewById(R.id.editText_in);

   btnFar.setOnClickListener(new View.OnClickListener()
   {
   public void onClick(View v)
   {
       String b;

     //Initialize soap request + add parameters
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);       

     //Use this to add parameters
     request.addProperty("Fahrenheit",txtFar.getText().toString());

     //Declare the version of the SOAP request
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

     envelope.setOutputSoapObject(request);
     envelope.dotNet = true;

     try 
     {
         HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

         //this is the actual part that will call the webservice
         androidHttpTransport.call(SOAP_ACTION, envelope);

         // Get the SoapResult from the envelope body.

         SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

         if(result != null)
         {
          //Get the first property and change the label text

            b = result.toString();
            Intent itnt = new Intent(v.getContext(), Tabhost.class);
            itnt.putExtra("gotonextpage", b.toString());
            startActivity(itnt);
         }
         else
         {
       Toast.makeText(getApplicationContext(), "NoResponse",Toast.LENGTH_SHORT).show();
         }
     }
    catch (Exception e)
    {
       e.printStackTrace();
       }
     }
   });
   }



 public class Tabhost extends TabActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
String result;
Bundle extras = getIntent().getExtras();
    if(extras != null){   
    result = extras.getString("gotonextpage");  
    }


TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;

    intent = new Intent().setClass(this, Tab_1.class);
spec = tabHost.newTabSpec("first").setIndicator("First").setContent(intent);
 intent.putExtra("gotonextpage", result);
        startActivity(itnt);
tabHost.addTab(spec);

intent = new Intent().setClass(this, Tab_2.class);
spec = tabHost.newTabSpec("second").setIndicator("Second").setContent(intent);
tabHost.addTab(spec);

tabHost.setCurrentTab(0);
}
}


Tab_1.java

public class Tab_1 extends Activity 
{
TextView tv;
String result;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

 Bundle extras = getIntent().getExtras();
if(extras != null)
{   result = extras.getString("gotonextpage");  }
tv = (TextView)findViewById(R.id.textView_main2);
tv.setText(result);
}}

Я не пытался, но, скорее всего, вам нужно запустить TabHost в классе Demo_tabActivity.java. Потому что, если вы вызовете свой класс хоста вкладки, он вызовет вкладку один и вкладку два действия соответственно. (зависит от того, какая вкладка установлена на текущую вкладку в узле вкладки). Попробуйте и дайте мне знать результат!

  • 0
    osayilgan, если я помещу Tabhost.class вместо Tab_1.java, он просто показывает виджет tabhost без ответов.
  • 0
    Какие данные вы пытаетесь получить, попробуйте получить в Tab_1.java. Потому что вы вызываете Tab_1.java с результатом, который вы получите в своей первой деятельности.
Показать ещё 8 комментариев
1

Для отображения каждого действия внутри TabHost вам нужно использовать TabGroupActivity. Проверьте эту ссылку на TabGroupActivity и посмотрите, как она работает. Это отобразит ваши вкладки во всех действиях, которые вы запускаете. Это должно решить вашу проблему. http://androidmaterial.blogspot.in/2011/04/how-to-us-tab-group-activity-in-android.html

  • 0
    Это должно сделать вашу работу, у меня была похожая проблема, и я ее реализовал, и она отлично работает
  • 0
    Можете ли вы сказать мне, что я должен исправить с моим проектом ... что я там не так сделал.
Показать ещё 1 комментарий
Сообщество Overcoder
Наверх
Меню