gpt4 book ai didi

没有开始 Activity 的android putextra

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:58 24 4
gpt4 key购买 nike

我需要帮助。我有两个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com