Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有某种意图_Java_Android_Android Intent - Fatal编程技术网

Java 有某种意图

Java 有某种意图,java,android,android-intent,Java,Android,Android Intent,假设我有4个按钮,每个按钮都包含一个指向某个活动的意图,它们都指向同一个活动。当我单击第一个按钮时,我希望新活动显示“嗨”,当我单击第二个按钮时,我希望它显示“再见”,依此类推。我该怎么做? 下面是一个简单的代码 public class Intentt extends Activity { Button b1,b2,b3,b4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(s

假设我有4个按钮,每个按钮都包含一个指向某个活动的意图,它们都指向同一个活动。当我单击第一个按钮时,我希望新活动显示“嗨”,当我单击第二个按钮时,我希望它显示“再见”,依此类推。我该怎么做? 下面是一个简单的代码

public class Intentt extends Activity {
Button b1,b2,b3,b4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_intentt);
    b1 = (Button)findViewById(R.id.button2);
    b2 = (Button)findViewById(R.id.button3);
    b3 = (Button)findViewById(R.id.button4);
    b4 = (Button)findViewById(R.id.button5);
    b1.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i  = new Intent(Intentt.this,MainActivity.class);
            startActivity(i);
        }
    });
    b2.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i  = new Intent(Intentt.this,MainActivity.class);
            startActivity(i);
        }
    });
    b3.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i  = new Intent(Intentt.this,MainActivity.class);
            startActivity(i);
        }
    });
    b4.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i  = new Intent(Intentt.this,MainActivity.class);
            startActivity(i);
        }
    });
}

只需通过intent extras或intent extra
包传递一些数据即可:

Intent i=new Intent(context,MainActivity.class);
i.putExtra(id, 453);
context.startActivity(i);
例如:

Button b1, b2, b3, b4;
Context context = this;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_intentt);
    b1 = (Button) findViewById(R.id.button2);
    b2 = (Button) findViewById(R.id.button3);
    b3 = (Button) findViewById(R.id.button4);
    b4 = (Button) findViewById(R.id.button5);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(context, MainActivity.class);
            i.putExtra(MainActivity.ID_ACTION, MainActivity.ACTION_1);
            startActivity(i);
        }
    });
    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(context, MainActivity.class);
            i.putExtra(MainActivity.ID_ACTION, MainActivity.ACTION_2);
            startActivity(i);
        }
    });
}
然后在该活动中,您可以打开该值,使其如下所示:

String id = intent.getStringExtra("id");
int id = intent.getIntExtra("id",-1);
然后使用
if elseif else
开关
语句根据传递的操作更改操作,以便显示消息

要正确接收它们,您需要在
AndroidManifest.xml
中将活动的启动模式设置为“standard”并创建

public static final int ACTION_1 = 1;
public static final int ACTION_2 = 2;
public static final int ACTION_NULL = -1;
public static final String ID_ACTION = "action_id";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    int id = getIntent().getIntExtra(ID_ACTION, -1);

    if (id == ACTION_NULL) {
        Log.d("TAG", "id is null");
        Toast.makeText(MainActivity.this, "id is null!", Toast.LENGTH_SHORT).show();
    } else if (id == ACTION_1) {
        Log.i("TAG", "ALLOHA! from button 1");
         Toast.makeText(MainActivity.this, "Aloha from button 1!", Toast.LENGTH_LONG).show();
    } else if (id == ACTION_2) {
        Log.i("TAG", "Hello from button 2");
         Toast.makeText(MainActivity.thi,"Hello from button 2!", Toast.LENGTH_LONG).show();
    }
}

在每个意图中,您都可以传递参数

Intent i=new Intent(context,SendMessage.class);
i.putExtra("KEY_MESSAGE", "Hola amigo");
在另一项活动中

 Intent i = getIntent();
 String message = i.getStringExtra("KEY_MESSAGE")
 Toast.make(this,message,Toast.LENGTH_SHORT).show()

重新编写按钮单击侦听器,如下所示:

b1.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i  = new Intent(Intentt.this,MainActivity.class);
        i.putExtra("Data","Hi");
        startActivity(i);
    }
});
b2.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i  = new Intent(Intentt.this,MainActivity.class);
        i.putExtra("Data","Hello");
        startActivity(i);
    }
});
b3.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i  = new Intent(Intentt.this,MainActivity.class);
        i.putExtra("Data","Bye");
        startActivity(i);
    }
});
b4.setOnClickListener( new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i  = new Intent(Intentt.this,MainActivity.class);
        i.putExtra("Data","See you");
        startActivity(i);
    }
});
在MainActivity类onCreate方法中,可以通过以下方式访问传递的数据:

String passedData = getIntent().getStringExtra("Data");
您可以使用此传递的数据在屏幕上显示。

按如下方式操作:

    public class Intentt extends Activity implements View.OnClickListener {
Button b1,b2,b3,b4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_intentt);
    b1 = (Button)findViewById(R.id.button2);
    b2 = (Button)findViewById(R.id.button3);
    b3 = (Button)findViewById(R.id.button4);
    b4 = (Button)findViewById(R.id.button5);
    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    b3.setOnClickListener(this);
    b4.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {


            switch (v.getId()) {
                case R.id.button2:

                    Intent i  = new Intent(Intentt.this,MainActivity.class);
                    i.putExtra('"STRING_I_NEED"', "Hi");
                    startActivity(i)

                    break;
                case R.id.button3:
                    Intent i  = new Intent(Intentt.this,MainActivity.class);
                    i.putExtra('"STRING_I_NEED"', "Bye");
                    startActivity(i)

                    break;

                case R.id.button4:

                    break;
                    .
                    .
                    .
            }
    }
}
之后,在mainActivity中检索发送的字符串:

Bundle extras = getIntent().getExtras();
String s = extras.getString("STRING_I_NEED");

请看一看:)您希望您的“意向性”知道要显示什么并将其传输到MainActivity还是Main将知道的第一个活动?就像我的例子一样?简单,只需添加祝酒词:)好的,我要测试itOk,我已经启动并运行了它。single top将在onCreate或onNewIntent(您永远不知道)中触发该代码,因此您需要在这两个位置触发该代码,或者执行活动
launchMode=“standard”
,然后将
onNewIntent
代码移动到
onCreate
只需检查答案中的最后一段代码;)测试它,在我的时钟上
00:40