- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要帮助。我有两个 Activity 和一个数据库。我想要做的就是当我在 Activity A 中按下一个按钮时,我将我的 editText 中的字符串发送到 Activity B。在 Activity B 中,我尝试将该字符串插入我的数据库并将其显示在 ListView 中。如果我在 Activity A 中启动 Activity B,则一切正常,但我不会显示 Activity B。
这是我的代码:
Activity A:
public class Example extends Activity {
public final static String ID_EXTRA2="com.example.activities";
public EditText MyInputText = null;
ImageView MyButton;
TextView MyOutputText, MyInputtext;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.diccionary);
MyInputText = (EditText)findViewById(R.id.InputText);
MyOutputText = (TextView)findViewById(R.id.OutputText);
MyButton = (ImageView)findViewById(R.id.botonaceptar);
MyButton.setOnClickListener(MyButtonOnClickListener);
public ImageView.OnClickListener MyTranslateButtonOnClickListener = new ImageView.OnClickListener(){
public void onClick(View v) {
String InputString;
InputString = MyInputText.getText().toString();
try{
Intent d = new Intent(Example.this, Secondactivity.class);
d.putExtra(ID_EXTRA2, InputString);
//startActivity(d); <----- If i start the secondactivity, that works...
}catch (Exception e){
}
}
};
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater awesome = getMenuInflater();
awesome.inflate(R.menu.main_menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.menu1:
startActivity(new Intent("com.example.activities.SECONDACTIVITY"));
return true;
case R.id.menu2:
//something to do
return true;
}
return false;
}
};
Activity B:
public class Secondactivity extends Activity {
NoteAdapter2 adapter = null;
NoteHelper2 helper2 = null;
Cursor dataset_cursor2 = null;
String entriId = null;
public ListView list2;
String passedword = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
try{
list2 = (ListView)findViewById(R.id.list2);
helper2 = new NoteHelper2(this);
---->passedword = getIntent().getStringExtra(Example.ID_EXTRA2);
---->helper2.insert(passedword); //here i insert the string in my db
startManagingCursor(dataset_cursor2);
dataset_cursor2 = helper2.getAll();
adapter = new NoteAdapter2(dataset_cursor2);
list2.setAdapter(adapter);
dataset_cursor2.requery();
adapter.notifyDataSetChanged();
//this is how we know to do when a list item is clicked
list2.setOnItemClickListener(onListClick);
}
catch (Exception e){
// this is the line of code that sends a real error message to the log
Log.e("ERROR", "ERROR IN CODE" + e.toString());
//this is the line that prints out the location in the code where the error ocurred
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
helper2.close();
}
private AdapterView.OnItemClickListener onListClick = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
entriId = String.valueOf(id);
}
};
class NoteAdapter2 extends CursorAdapter {
NoteAdapter2(Cursor c){
super(Zhistorytranslate.this, c);
}
public void bindView(View row2, Context ctxt, Cursor c) {
NoteHolder2 holder2 = (NoteHolder2)row2.getTag();
holder2.populateFrom2(c, helper2);
}
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row2 = inflater.inflate(R.layout.row2, parent, false);
NoteHolder2 holder2 = new NoteHolder2(row2);
row2.setTag(holder2);
return (row2);
}
}
static class NoteHolder2 {
private TextView entriText = null;
NoteHolder2(View row2){
entriText = (TextView)row2.findViewById(R.id.entri);
}
void populateFrom2(Cursor c, NoteHelper2 helper2) {
entriText.setText(helper2.getEntri(c));
}
}
最佳答案
如果我没理解错的话,您希望在不启动 B 的情况下将数据从 A 发送到 B。在这种情况下,您需要忘记 Intents 并考虑一种方法来 store data在你的应用程序中。我的建议是使用 SharedPreferences .
这里是你如何使用它:
在您的 Activity A 中,存储字符串:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("string_id", InputString); //InputString: from the EditText
editor.commit();
在您的 Activity B 中,您可以通过以下方式获取值:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String data = prefs.getString("string_id", "no id"); //no id: default value
关于没有开始 Activity 的android putextra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030276/
在下面的 for 循环中,最后一个 putExtra 覆盖了第一个 putExtra,即使它们采用不同的参数和不同的变量。 首先:putExtra(String,String)第二:putExtra(
这个问题听起来可能很愚蠢,但我想知道我们什么时候将 Activity 名称放入 Intent.putExtra() 中?在一种情况下,我们仅将 extra 与 bundle 放在一起,而在另一种情况下
什么更快?将一堆字符串值添加到 bundle,然后将其添加到 intent?或者只是使用 intent.putExtra() 将值添加到 intent?还是差别不大? 谷歌搜索给了我教程,但没有太多答
我正在考虑我当前的应用程序。我有这个带有两个选项卡的 TabHost 类。Tab1 在 ListView 中显示来自 WS 的数据。 Tab2 在 webview 中显示与图表相同的数据。 当然,我不
基于 Searchable Dictionary示例 我尝试将额外的数据放入不同的 Activity 中。 public void onCreate(Bundle savedInstanceStat
我的问题是在 3 个 Activity 之间传递一个字符串。我解释一下我是如何做到的。 第一个名为 loginActiviy 的 Activity 是我执行此操作的地方。 //OnCreate e
我有一个要求,我想开发一个混合应用程序并列出蓝牙设备、扫描和连接、共享文件等。 所以我想将 BluetoothAdapter mAdapter 值添加到 extras 中并将其传递到 onActivi
我正在关注这个例子: http://developer.android.com/training/camera/photobasics.html 如果您为此 putExtra(MediaStore.E
好的 所以我想使用 getextrand putextra 方法将值从一个 Activity 传递到另一个 Activity 。 在我想要接收数据的第二个 Activity 中,充满了按钮和 Text
我在点击按钮时使用此操作调用 Activity: EditText text = (EditText) findViewById(R.id.codice); Intent intent = new I
我有 Intent,我从 MainActivity 将两个 ArrayLists 的 Parceables 传递给一个“FormActivity”,它接收 ArrayLists perfeclty(使
这是用于将数据发送到主 Activity 的函数。 public void sendData(){ String name = Bookname.getText().toString(
我想将 Intent 从第一个 Activity 发送到另一个 Activity 。 第一个 Activity 向第二个 Activity 发送一个 Intent 以创建一个新的 AlertDialo
我有多个变量要从一个 Activity 传递到另一个 Activity 。 我在第一个 Activity 中有这个: public void onClick(View v) { switch(
我有一个通知,当按下时应该启动一个 Activity ,该 Activity 又会启动一个对话框。这一切都有效,但对话框从通知中提取信息认为 Intent.putExtra()。问题是,它总是从 pu
这个问题在这里已经有了答案: Passing JSONObject to another activity via Intent [duplicate] (3 个答案) 关闭 5 年前。 如何使用p
我在 GCMIntentservice 中编写了一段代码,用于向许多用户发送推送通知。我使用的NotificationManager将在单击通知时调用DescriptionActivity类。我还将
我有一个代码,使用 putextra 方法将数据从 Activity 推送到另一个 Activity ,我想使用相同的键推送不同的值代码: String int_value = "int_value"
我有 2 项 Activity ,我正在尝试将第一个 Activity 中的值放入第二个 Activity 中。在第一个 Activity 中,我创建了一个带有 onClick 参数的按钮。 然后我
我正在尝试开发一个二维码扫描仪,我想向用户显示扫描结果的历史记录。现在,虽然扫描的数据值已正确传递到不同的 Activity ;它的问题是,即使我没有扫描 qr,空数据也会传递到下一个 Activit
我是一名优秀的程序员,十分优秀!