Строка не переходит ко второй активности Android - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь начать новое действие в своем приложении для 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);

}
}

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

Ответы [ 4 ]

3 голосов
/ 17 февраля 2012

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

    @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); 
    }

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

0 голосов
/ 20 февраля 2012

отметьте это, просто поместите этот код в свой первый щелчок на действии. Примечание: -> непосредственно захватывайте текст редактирования, не сохраняйте текст редактирования в строке и затем передавайте его, если вы сделаете show, то строка не пройдет.см. приведенный ниже пример

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);
    }

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

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

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

0 голосов
/ 17 февраля 2012

В вашем коде замечено неправильно, просто удалите строку рядом с URL в методе buttonsubmit.onclicklistener. вам не нужно запускать действия для результата, если вы хотите отправить строку из одного действия в другое. Ты это во втором занятии.

Bundle b=getIntent().getExtras();
String url = b.getInt("pschoolurl");
0 голосов
/ 17 февраля 2012

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

...