字符串不传递到第二个Android活动

问题描述:

我想在我的Android应用程序中开始一个新的活动,并且我试图从第一个活动传递一个简单的字符串到第二个活动。现在我想让字符串显示在第二个活动的textview中,但它不起作用。我究竟做错了什么?字符串不传递到第二个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

只是不会工作 - 你的意思是它崩溃?显示一个空字符串?怎么了? – 2012-02-17 01:12:57

+0

只是第二项活动中的空白背景。 textview不显示任何字符。 – Slicekick 2012-02-17 01:14:00

+0

使用'Log.i(“MyPowerSchoolActivity”,“Url =”+ url);'在添加到意图之前查看'url'的值。 – JackMahoney 2012-02-17 03:19:56

实例化字符串为时尚早,创建侦听器时,相反,你应该得到它时,监听被调用:

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

顺便说一句,请遵循命名惯例,并开始变量具有较低大小写字母(editTextURL)它会使代码更容易让其他人感到困惑(像我:))

+0

太棒了!你介意给我解释过早实例化字符串的问题吗? – Slicekick 2012-02-17 01:22:39

+0

在初始化它的时候,也就是当你创建监听器的时候,editText仍然是空的,所以你给它分配了一个空字符串。 – MByD 2012-02-17 01:24:13

+0

下面是这些命名约定的链接:http://source.android.com/source/code-style.html - 顺便说一句,如果偶尔出现某种情况,不要太紧张 - 例如,Binyamin错过了关于“对待首字母缩略词”的部分:P(editTextUrl) – 2012-02-17 01:27:57

在为其添加任何值之前,您的OnClickListener的实例化时间将为url设置值。请尝试从onClick方法的主体中读取TextView中的值。

它在代码中没有错,只是在buttonsubmit.onclicklistener方法中删除url旁边的字符串。如果你想从一个活动发送一个字符串到另一个活动,你不必为结果开始活动。 这是你的第二个活动。

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

检查了这一点只是把这个代码在你的第一个活动注意的onclick: - >直接捕获的EditText DONOT保存在字符串编辑文本,然后通过它,如果你会做表演,然后串不会通过。看下面的例子

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让我知道它是否适用于您。