此代码只有2个按钮“Samsung”和“Apple”,它们启动了另一个列出一堆设备的活动。如何将相应的公司名称(例如三星)传递给儿童活动?我是否必须使数组全局化?我只知道如何通过这个职位
我知道如何在一个函数中传递它,但在这种情况下我有两个,一个设置自定义列表适配器,另一个只是一个onClick函数。这使用数组而不是独立的字符串,所以我不知道如何处理
MainActivity.java
package org.turntotech.navigatesample;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends ListActivity implements OnItemClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TurnToTech", "Project Name - NavigateSample");
String[] data = { "Samsung", "Apple" };
int[] icons = { R.drawable.samsung_logo, R.drawable.opo };
// Provide the cursor for the list view.
setListAdapter(new CustomListAdapter(this, data, icons));
/* setOnItemClickListener() Register a callback to be invoked when an item
* in this AdapterView has been clicked.
*/
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Intent intent = new Intent(parent.getContext(), ChildActivity.class);
// Add extended data to the intent.
intent.putExtra("POSITION", position);
/*
* Launch a new activity. You will not receive any information about when
* the activity exits. This implementation overrides the base version,
* providing information about the activity performing the launch.
*/
startActivity(intent);
}
}
ChildActivity.java
package org.turntotech.navigatesample;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
public class ChildActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[][] data = {
{ "Galaxy Tab", "Galaxy Smart Phones", "Galaxy Gear" },
{ "iPhone", "iPad", "iPod" } };
int[][] icons = {
{ R.drawable.gala, R.drawable.duos, R.drawable.star },
{ R.drawable.a, R.drawable.b, R.drawable.c }, };
Intent intent = getIntent();
int position = intent.getIntExtra("POSITION", 0);
// Provide the cursor for the list view.
setListAdapter(new CustomListAdapter(this, data[position],
icons[position]));
}
}
答案 0 :(得分:1)
您只需使用putExtra(java.lang.String, java.lang.String)传递字符串,然后使用getStringExtra(java.lang.String)
进行检索如果数组是静态的,你可以declare it in XML并传递位置
修改:添加了示例
examples.xml:
示例<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="brands">
<item>Samsung</item>
<item>Apple</item>
</string-array>
<string-array name="apple_models">
<item>iPhone</item>
<item>iPad</item>
<item>iPod</item>
</string-array>
<string-array name="samsung_models">
<item>Galaxy Tab</item>
<item>Galaxy Smart Phones</item>
<item>Galaxy Gear</item>
</string-array>
</resources>
然后使用:
进行检索Intent intent = getIntent();
int position = intent.getIntExtra("POSITION", 0);
String[] brandArray = getResources().getStringArray(R.array.brands);
String brandName = brandArray[position];
答案 1 :(得分:0)
示例1:
您可以将会话ID传递给您在启动活动时使用的意图中的注销父活动。
Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent)
访问子活动中的意图。
String str = getIntent().getStringExtra("EXTRA_SESSION_ID");
示例2:
在您当前的活动中,创建一个新的意图:
Intent intent = new Intent(getApplicationContext(), NewActivity.class);
intent.putExtra("key","value");
startActivity(intent);
然后在新的Activity中,检索这些值:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("key");
}
使用此技术将变量从一个Activity传递到另一个Activity。
答案 2 :(得分:0)
您实际上不需要具有通用的ChildActivity类。我认为最简单的方法是进行两项活动。 SamsungChildActivity和AppleChildActivity。两者都可以膨胀相同的布局,但内容将特定于一个或另一个。您还应该将资源放在资源文件夹中,就像数据数组一样(查看字符串数组资源)。在MainActivity中,只需查看您要启动的活动,然后为SamsungChildActivity或AppleChildActivity创建意图。