Android 从一个活动切换到另一个活动时意图不起作用

Android 从一个活动切换到另一个活动时意图不起作用,android,android-intent,Android,Android Intent,我制作了一个包含两个活动的简单android程序,第一个活动包含一个edittext和一个按钮,第二个活动包含一个textview。现在,当第一个活动中的按钮按下时,edittext中的文本应该转到第二个活动的textview。我尝试了以下代码,但它不起作用: MainActivity.java package com.example.myweb; import android.os.Bundle; import android.app.Activity; import android.con

我制作了一个包含两个活动的简单android程序,第一个活动包含一个edittext和一个按钮,第二个活动包含一个textview。现在,当第一个活动中的按钮按下时,edittext中的文本应该转到第二个活动的textview。我尝试了以下代码,但它不起作用:

MainActivity.java

package com.example.myweb;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
     public final static String EXTRA_MESSAGE = "com.example.myweb";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button b =(Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                 EditText ed = (EditText)findViewById(R.id.edit_msg);
                Intent i = new Intent(getApplicationContext(),Act2.class);
            String s= ed.getText().toString();

            i.putExtra("EXTRA_MESSAGE", s);
                startActivity(i);

            }
        });

    }

}
package com.example.myweb;

import org.w3c.dom.Text;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Act2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            TextView tv = (TextView)findViewById(R.id.tv1); 
                Intent i =getIntent();
                String msg = i.getStringExtra(MainActivity.EXTRA_MESSAGE);
            tv.setText(msg);

            setContentView(tv);





            }
        });
    }
}
package com.example.activityact;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Act2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act2);
    // TODO Auto-generated method stub
    TextView tv = (TextView) findViewById(R.id.textView1);
    Intent i =getIntent();
    // String msg = i.getStringExtra(EXTRA_MESSAGE);
    //String receiver = getIntent().getStringExtra(EXTRA_MESSAGE);
    String message = i.getStringExtra("EXTRA_MESSAGE");
    tv.setText(message);

}

 }
Act2.java

package com.example.myweb;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
     public final static String EXTRA_MESSAGE = "com.example.myweb";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Button b =(Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                 EditText ed = (EditText)findViewById(R.id.edit_msg);
                Intent i = new Intent(getApplicationContext(),Act2.class);
            String s= ed.getText().toString();

            i.putExtra("EXTRA_MESSAGE", s);
                startActivity(i);

            }
        });

    }

}
package com.example.myweb;

import org.w3c.dom.Text;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Act2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
        Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            TextView tv = (TextView)findViewById(R.id.tv1); 
                Intent i =getIntent();
                String msg = i.getStringExtra(MainActivity.EXTRA_MESSAGE);
            tv.setText(msg);

            setContentView(tv);





            }
        });
    }
}
package com.example.activityact;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class Act2 extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.act2);
    // TODO Auto-generated method stub
    TextView tv = (TextView) findViewById(R.id.textView1);
    Intent i =getIntent();
    // String msg = i.getStringExtra(EXTRA_MESSAGE);
    //String receiver = getIntent().getStringExtra(EXTRA_MESSAGE);
    String message = i.getStringExtra("EXTRA_MESSAGE");
    tv.setText(message);

}

 }
请帮帮我。谢谢你试试

Intent i = new Intent(MainActivity.this,Act2.class);
试一试


您是否记得在清单XML中正确定义第二个活动


查看这本很棒的指南,了解您可能遗漏的任何内容:

您是否记得在清单XML中正确定义第二个活动

查看这本很棒的指南,了解您可能错过的任何其他内容:

您正在使用的

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
因此,在主要活动中

i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
您正在使用

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
因此,在主要活动中

i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
您正在使用

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
因此,在主要活动中

i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
(或)

而且

您正在使用

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
因此,在主要活动中

i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
(或)

而且

改变

MainActivity.EXTRA_MESSAGE
表示一个静态变量
MainActivity.java
class。希望你能有所不同。您需要变量
EXTRA_MESSAGE
,该变量已放入
intent i

编辑:对于您的崩溃,我们需要一个logcat o/p和活动,清单代码。但可能的原因是:

  • 活动
    Act2.java
    未在
    manifest
    文件中声明

  • 你说你在第二个活动中只有一个文本视图。但是您正试图从
    act2.xml
    获取
    按钮1
    。所以你正接近武力

  • 将Act2.java的
    onCreate()
    更改为

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
    
        TextView tv = (TextView)findViewById(R.id.tv1); 
        Intent i =getIntent();
        String msg = i.getStringExtra("EXTRA_MESSAGE");
        tv.setText(msg);
    }
    
    您不需要调用
    setContentView(电视)因为它已经存在于act2.xml中,并且您正在使用
    setContentView(R.layout.act2)

    希望你的问题得到解决。

    改变

    String msg = i.getStringExtra(MainActivity.EXTRA_MESSAGE);
    

    MainActivity.EXTRA_MESSAGE
    表示一个静态变量
    MainActivity.java
    class。希望你能有所不同。您需要变量
    EXTRA_MESSAGE
    ,该变量已放入
    intent i

    编辑:对于您的崩溃,我们需要一个logcat o/p和活动,清单代码。但可能的原因是:

  • 活动
    Act2.java
    未在
    manifest
    文件中声明

  • 你说你在第二个活动中只有一个文本视图。但是您正试图从
    act2.xml
    获取
    按钮1
    。所以你正接近武力

  • 将Act2.java的
    onCreate()
    更改为

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act2);
    
        TextView tv = (TextView)findViewById(R.id.tv1); 
        Intent i =getIntent();
        String msg = i.getStringExtra("EXTRA_MESSAGE");
        tv.setText(msg);
    }
    
    您不需要调用
    setContentView(电视)因为它已经存在于act2.xml中,并且您正在使用
    setContentView(R.layout.act2)

    希望你的问题得到解决。

    试试这个:

    在MainActivity.java中:

    public final static String EXTRA_MESSAGE = "com.example.myweb";
    
    i.put("EXTRA_MESSAGE",s);
    
    将按钮b和编辑文本声明为类字段(即,将其保留在onCreate()之外)

    在Act2.java中:

        ...
        Intent i = getIntent();
        String msg = i.getStringExtra("EXTRA_MESSAGE");
    
    
        TextView tv = (TextView)findViewById(R.id.tv1); 
    tv.setText(msg);
         Button b1=(Button)findViewById(R.id.button1);
                b1.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
    
    
    
                    }
                });
        ...
    
    试试这个:

    在MainActivity.java中:

    public final static String EXTRA_MESSAGE = "com.example.myweb";
    
    i.put("EXTRA_MESSAGE",s);
    
    将按钮b和编辑文本声明为类字段(即,将其保留在onCreate()之外)

    在Act2.java中:

        ...
        Intent i = getIntent();
        String msg = i.getStringExtra("EXTRA_MESSAGE");
    
    
        TextView tv = (TextView)findViewById(R.id.tv1); 
    tv.setText(msg);
         Button b1=(Button)findViewById(R.id.button1);
                b1.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
    
    
    
                    }
                });
        ...
    
    使用此代码
    **MainActivity.java**
    公共类MainActivity扩展了活动{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    按钮按钮=(按钮)findViewById(R.id.button1);
    final EditText EditText=(EditText)findViewById(R.id.editText1);
    setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    //TODO自动生成的方法存根
    Intent Intent=新的Intent(getApplicationContext(),SecondActivity.class);
    intent.putExtra(“额外消息”,editText.getText().toString());
    星触觉(意向);
    }
    });
    }
    }
    **activity_main.xml**
    **SecondActivity.java**
    公共类SecondActivity扩展了活动{
    /**在首次创建活动时调用*/
    @凌驾
    创建时的公共void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    //TODO自动生成的方法存根
    setContentView(R.layout.second);
    Intent=getIntent();
    最终字符串消息=intent.getStringExtra(“额外消息”);
    按钮按钮=(按钮)findViewById(R.id.button1);
    setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    //TODO自动生成的方法存根
    TextView TextView=新的TextView(SecondActivity.this);
    textView.setText(消息);
    setContentView(文本视图);
    }
    });
    }
    }
    **second.xml**
    
    使用此代码
    **MainActivity.java**
    公共类MainActivity扩展了活动{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    按钮按钮=(按钮)findViewById(R.id.button1);
    final EditText EditText=(EditText)findViewById(R.id.editText1);
    setOnClickListener(新视图.OnClickListener(){
    @凌驾
    公共void onClick(视图v){
    //TODO自动生成的方法存根
    Intent Intent=新的Intent(getApplicationContext(),SecondActivity.class);
    intent.putExtra(“额外消息”,editText.getText().toString());
    星触觉(意向);
    }
    });
    }
    }
    **activity_main.xml**
    **SecondActivity.java**
    公共类SecondActivity扩展了活动{
    /**卡尔