我在activity1中有一个ListView,其中有几个项目来自数据库。用户单击Listview中的项目,它将导航到activity2,其中应显示单词的详细信息,这些单词存储在数据库中作为列字,定义。但屏幕2中显示的内容取决于屏幕1中单击的项目
对于Ex - 屏幕1中的用户点击A - 屏幕2中显示从A开始的单词。是否有任何方法可以传递行ID,以便在下一个屏幕中显示数据库中的单词和定义。
谢谢你... 第一项活动的代码:
lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView parent, View v, int position, long id) {
// TODO Auto-generated method stub
Cursor c = mDictCursor;
c.moveToPosition(position);
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
Bundle bundle=new Bundle();
//intent.putExtra("position",position);
bundle.putLong(DBAdapter.KEY_ROWID, id);
bundle.putString(DBAdapter.KEY_TITLE, c.getString(
c.getColumnIndexOrThrow(DBAdapter.KEY_TITLE)));
bundle.putString(DBAdapter.KEY_DEFINITION, c.getString(
c.getColumnIndexOrThrow(DBAdapter.KEY_DEFINITION)));
i.putExtras(bundle);
startActivity(i);
}
SecondActivity代码:
Bundle extras = getIntent()。getExtras();
mRowId = extras.getLong(DBAdapter.KEY_ROWID);
String title = extras.getString(DBAdapter.KEY_TITLE);
String body = extras.getString(DBAdapter.KEY_DEFINITION);
TextView word = (TextView) findViewById(R.id.word);
word.setText(title);
TextView definition = (TextView) findViewById(R.id.definition);
definition.setText(body);
}
每当我点击listview项时,它都会显示强制关闭的对话框。请帮忙......
答案 0 :(得分:1)
您可以在Screen1中使用Intent对象putExtra(String name,int value)方法(参见1)并将intent对象传递给Screen2,在Screen2中使用Intent对象的getIntExtra(String name,int defaultValue)方法(参见2)。 1.在Screen1中使用startActivity(Intent intent)方法 2.使用Screen2中的getIntent()方法获取您在Screen1中传递的Intent对象
答案 1 :(得分:1)
我猜你正在寻找类似这样的东西。 https://market.android.com/developer?pub=acharya https://market.android.com/details?id=com.acharyaapp.malayalam.aksharam.full (这些是我的应用程序)
为什么不尝试使用Singleton类来存储信息。一个Intent可以设置它,另一个意图可以读取它。我在我的应用程序中使用了这个逻辑。
修改强>
public class MySingleton {
private static final MySingleton INSTANCE = new MySingleton();
//TODO ... all your variable as public static variables. eg. KEY_TITLE
private MySingleton() { }
public static MySingleton getInstance()
return INSTANCE;
}
}
内部活动,将它们用作普通实例。只需确保调用getInstance()而不是构造函数来获取共享实例。
希望这会有所帮助。