【问题标题】:Android - I am using intent to communicate between two activitiesAndroid - 我正在使用意图在两个活动之间进行通信
【发布时间】:2012-07-21 18:38:26
【问题描述】:

Android - 我正在使用意图在两个活动之间进行通信。我在调用活动中使用了 putExtra(),并且在被调用活动中使用了 getExtras。但问题是我无法使用我在意图中检索到的数字设置编辑文本。下面是我的程序`

// 调用活动

package com.example.androidtutorial2;

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.text.InputType;

public class MainActivity extends Activity {

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

        //EDIT TEXT
        final EditText sharedata = (EditText) findViewById ( R.id.editText1 ) ;
        sharedata.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);

        //BUTTON
        Button sendbutton = (Button) findViewById (R.id.button2) ;
        sendbutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                int edittext_data =                     Integer.valueOf(sharedata.getText().toString());

                Intent sendintent = new Intent(MainActivity.this,second_activity.class);
                sendintent.putExtra("somedata", edittext_data);
                startActivity(sendintent);

            }
        });

//        Button button_to_call_activity = (Button) findViewById(R.id.button1);
//        button_to_call_activity.setOnClickListener(new OnClickListener() {
//          
//          @Override
//          public void onClick(View v) {
//          
//              
//          }
//      });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


}


//CALLED ACTIVITY



package com.example.androidtutorial2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.widget.EditText;

public class second_activity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        EditText displaymessage = (EditText) findViewById ( R.id.editText1 );

        Intent intent1 = getIntent();
        Bundle bundle1 = intent1.getExtras();
        int integer1 = bundle1.getInt("somedata");

        Integer string1 = integer1;

        displaymessage.setText(integer1);               // HERE IS A RUNTIME ERROR


    }
}

【问题讨论】:

    标签: java android


    【解决方案1】:

    使用

    displaymessage.setText("" +integer1); 
    

    或者

    displaymessage.setText(String.valueOf(integer1)); 
    

    【讨论】:

    【解决方案2】:

    1.首先,如果您使用 Java 1.5 及更高版本,请不要使用Integer.valueOf(),而是使用Integer.parseInt()

    例如:

    int edittext_data = Integer.parseInt(sharedata.getText().toString());

    2。您的输出问题就在这里。

    不要这样做...Integer string1 = integer1;

    这样使用...

    String string1 = getIntent().getExtras().getString("somedata"); displaymessage.setText(string1);

    【讨论】:

      【解决方案3】:

      由于您似乎没有将变量作为整数进行任何操作,因此您也可以简单地将其保留为字符串。

      sendintent.putExtra("somedata", sharedata.getText().toString());
      
      String integer1 = bundle1.getString("somedata");
      

      【讨论】:

      • 另外,仅供参考,将 int 放入 setText() 时出错的原因是 setText(int) 旨在查找 int xml 资源 ID。因此,如果您真的想将其作为 int 放入,请执行 imran 上面所说的操作: setText("" + int);
      猜你喜欢
      • 1970-01-01
      • 2013-10-02
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      相关资源
      最近更新 更多