2012-02-17 3 views
0

Я пытаюсь запустить новую активность в моем приложении Android, и я пытаюсь передать простую строку из первой активности во вторую активность. Я хочу, чтобы строка отображалась в текстовом виде для второго действия, но это просто не сработает. Что я делаю не так?Строка, не переходящая ко второму действию Android

Начальная активность:

package com.amritayalur.mypowerschool; 



import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.method.ScrollingMovementMethod; 
import android.view.Gravity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 



public class MyPowerSchoolActivity extends Activity { 
Button buttonSubmit; 
TextView TextViewTitle; 
TextView TextViewDesc; 
EditText EditTextURL; 
String url = ""; 
String str; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    buttonSubmit = (Button) findViewById(R.id.buttonSubmit); 
    TextViewTitle = (TextView) findViewById(R.id.TextViewTitle); 
    TextViewDesc = (TextView) findViewById(R.id.TextViewDesc); 

    EditTextURL = (EditText) findViewById(R.id.EditTextURL); 


    //Start TextView 
    TextViewTitle.setText("MyPowerSchool"); 


    //button listener 
    buttonSubmit.setOnClickListener(new View.OnClickListener() { 


     String url = EditTextURL.getText().toString(); 


     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent i = new Intent(MyPowerSchoolActivity.this, 
creds.class);  


      i.putExtra("pschoolurl", url); 
      final int result = 1; 
      startActivityForResult(i, result); 

     } 

    }); 



}  
} 

Вторая активность:

package com.amritayalur.mypowerschool; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.webkit.WebView; 
import android.widget.Toast; 
import android.widget.TextView; 



public class creds extends Activity { 

String test; 
TextView TextViewTest; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 




    Intent intent = getIntent(); 
    String test = intent.getExtras().getString("pschoolurl"); 

    TextViewTest = (TextView) findViewById(R.id.TextViewTest); 
    TextViewTest.setText(test); 

} 
} 

Я знаю TextView дисплеи должным образом во второй деятельности; он работает с любым фиктивным текстом, а не с переменной.

+0

просто не будет работать. Вы имеете в виду, что он падает? Отображает пустую строку? Что происходит? –

+0

Просто пустой фон во втором мероприятии. Текстовые изображения не отображаются. – Slicekick

+0

Используйте 'Log.i (" MyPowerSchoolActivity "," Url = "+ url);', чтобы увидеть значение 'url', прежде чем оно будет добавлено в намерение. – JackMahoney

ответ

3

Вы инстанцируете строковый путь слишком рано, при создании слушателя, вместо этого, вы должны получить его, когда слушатель получает называется:

@Override 
    public void onClick(View v) { 
     Intent i = new Intent(MyPowerSchoolActivity.this, creds.class);  
     i.putExtra("pschoolurl", EditTextURL.getText().toString()); 
     // get the text here  ^^^ 
     final int result = 1; 
     startActivityForResult(i, result); 
    } 

BTW, пожалуйста, следуйте соглашениям об именах и начать переменные с нижне- (editTextURL), это сделает код менее запутанным для других людей (например, я :))

+0

Фантастический! Не могли бы вы объяснить мне проблему с созданием строки слишком рано? – Slicekick

+0

В тот момент, когда вы его инициализировали, когда вы создали слушателя, который находится в onCreate, editText был по-прежнему пуст, поэтому вы назначили ему пустую строку. – MByD

+0

Вот ссылка на эти соглашения об именах: http://source.android.com/source/code-style.html - BTW, не слишком напрягайтесь, если что-то иногда выскакивает - например, Биньямин пропустил часть о «лечить Акронимы как слова»: P (editTextUrl) –

0

Значение для url устанавливается во время создания для вашего OnClickListener, прежде чем вы вложите в него какое-либо значение. Попробуйте прочитать значение из вашего TextView в теле метода onClick.

0

Его неправильное обозначение в коде просто удаляет строку рядом с url в методе buttonubmit.onclicklistener. вам не нужно запускать действие для результата, если вы хотите отправить строку из одной активности в другую. Thy это в вашей второй деятельности.

Bundle b=getIntent().getExtras(); 
String url = b.getInt("pschoolurl"); 
0

проверить это просто поставить этот код в OnClick первой деятельности Примечание: -> непосредственно захватить EditText выигрыш сохранить редактирования текста в строку, а затем передать его, если вы будете делать шоу, то строка не пройдет , смотрите пример ниже

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    Intent i = new Intent(this,Web.class); 
    i.putExtra("epuzzle",urlenter.getText().toString()); 
    final int result = 1; 
     startActivityForResult(i, result); 
    } 

теперь второй активность поставить это, Примечание: -> это вы будете пытаться сохранить passeed строки деятельности первым в другую строку в деятельности второго, то он не будет работать, вы должны напрямую передайте строку в loadurl вместо сохранения и перехода к loadurl.

Intent intent = getIntent(); 
    w.loadUrl(intent.getExtras().getString("epuzzle")); 
    w.getSettings().setJavaScriptEnabled(true); 

plz сообщите мне, если это сработало для вас или нет.

Смежные вопросы