1

最初のアクティビティには edittext とボタンが含まれ、2 番目のアクティビティには textview が含まれます。1 番目のアクティビティのボタンが押されると、Edittext からのテキストが 2 番目のアクティビティの 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);

            }
        });

    }

}

Act2.java

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





            }
        });
    }
}

助けてください。ありがとう

4

9 に答える 9

3

これを試してください:

MainActivity.java 内:

ボタン b と EditText をクラス フィールドとして宣言します (つまり、onCreate() の外側に保持します)。

class MainActivity.java
{
Button b;
EditText ed;
...

onCreate() {
...
        b =(Button)findViewById(R.id.button1);
ed = (EditText)findViewById(R.id.edit_msg);
        b.setOnClickListener(new OnClickListener() {

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


                Intent i = new Intent(MainActivity.this,Act2.class);
            String s= ed.getText().toString();

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

            }
        });
...

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



                }
            });
    ...
于 2013-04-30T06:34:18.830 に答える
3

変化する

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

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

MainActivity.EXTRA_MESSAGEMainActivity.javaクラスの静的変数を意味します。違いを感じてください。入力した変数が必要EXTRA_MESSAGEですintent i

編集: クラッシュの場合、logcat o/p とアクティビティ、マニフェスト コードが必要です。しかし、考えられる理由:

  1. アクティビティAct2.javamanifestファイルで宣言されていません。

  2. 2番目のアクティビティにはテキストビューしかないと言いました。しかし、あなたは から取得しようとしていbutton1ますact2.xml。だからあなたは力に近づいています。

の変更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(tv);act2.xml に既に存在し、使用しているため、呼び出す必要はありませんsetContentView(R.layout.act2);

あなたの問題が解決されることを願っています。

于 2013-04-30T06:27:50.693 に答える
3

使用している

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

したがって、MainActivity で

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

(また)

String message = intent.getStringExtra("EXTRA_MESSAGE");

また、

i.putExtra("EXTRA_MESSAGE", s);
于 2013-04-30T06:26:21.080 に答える
0

コードを確認して変更してください。

  package com.example.activityact;

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

  public class MainActivity extends Activity {

   @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.editText1);
           Intent i = new Intent(getApplicationContext(),Act2.class);
       String s= ed.getText().toString();

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

       }
   });

  }

 }

Act2.java

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

}

 }
于 2013-04-30T06:54:06.960 に答える
0

使用している

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

したがって、MainActivity で

i.putExtra(EXTRA_MESSAGE, s);
startActivity(i);
于 2013-04-30T06:26:06.877 に答える