我正在尝试构建我的第一个Android应用程序,我想出了一个"问题"。 我想将输出文本存储在arrayList中,并将其显示在listView中,该listView位于另一个页面上。
MainActivity类:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TextView textView = (TextView) findViewById(R.id.textView);
final TextView textView2 = (TextView) findViewById(R.id.textView2);
final SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
Button button = (Button) findViewById(R.id.button);
final RadioButton radioButton = (RadioButton) findViewById(R.id.radioButton);
final RadioButton radioButton2 = (RadioButton) findViewById(R.id.radioButton2);
final RadioButton radioButton3 = (RadioButton) findViewById(R.id.radioButton3);
final RadioButton radioButton4 = (RadioButton) findViewById(R.id.radioButton4);
final TextView textView3 = (TextView) findViewById(R.id.textView3);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayList<String> addArray = new ArrayList<String>();
TextView textView3 = (TextView)findViewById(R.id.textView3);
ListView listView = (ListView)findViewById(R.id.listView);
String getInput = textView3.getText().toString();
if(addArray.contains(getInput)){
Toast.makeText(getBaseContext(),"Password already exists!",Toast.LENGTH_LONG).show();
}
else if (getInput==null){
Toast.makeText(getBaseContext(), "Input field is empty!", Toast.LENGTH_SHORT).show();
}
else {
addArray.add(getInput);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray);
listView.setAdapter(adapter);
((TextView)findViewById(R.id.textView3)).setText("");
}
Snackbar.make(view, "Password saved!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
此时我的代码运行没有错误......但我希望listView位于另一个名为:saved_passwords的活动中。当我编辑这个
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray);
到此
ArrayAdapter<String> adapter = new ArrayAdapter<String>(saved_passwords, android.R.layout.simple_list_item_1,addArray);
我的代码不会运行。
感谢高级人员。
答案 0 :(得分:0)
在您给出的第一个示例中,您正在正确传递活动的上下文。在第二个问题是,你不是如何引用另一个活动上下文,但更重要的是,你还没有访问saved_passwords
的上下文。活动未公开。
我建议您将Listview
addArray
传递给@ himanshu1496建议的其他活动。然后,您就可以进行以下调用而不会出现saved_passwords
的任何错误。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(saved_passwords.this, android.R.layout.simple_list_item_1,addArray);
答案 1 :(得分:0)
启动SavedPassword活动时,您必须传递<?xml version="1.0" encoding="utf-8" ?>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:theme="clr-namespace:UI.Themes"
x:Class="UI.App">
<Application.Resources>
<ResourceDictionary MergedWith="themes:BlueTheme" />
</Application.Resources>
<Label Text="Hello" />
</Application>
,如下所示:
ArrayList
在SavedPasswordActivity的Intent intent = new Intent(MainActivity.this,
SavedPasswordActivity.class);
data.putStringArrayList("SavedPassword",
addArray);
intent.putExtras(data);
startActivity(intent);
方法内,您必须初始化onCreate
,如下所示:
ListView
是的,不要忘记在@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saved_password);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ArrayList<String> addArray getIntent().getExtras().getStringArrayList("SavedPassword");
ListView listView = (ListView)findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,addArray);
listView.setAdapter(adapter);
}
文件中加入ListView
。
答案 2 :(得分:0)
最简单的方法来创建另一个包含0;0;"ok"
的类,其中包含ArrayList
public static
然后,您可以在 MainActivity 中将项目添加到public class MyClass {
public static ArrayList<String> addArray;
}
ArrayList
现在您也可以使用 saved_passwords 活动访问相同的MyClass.addArray.add("item");
ArrayList
我希望这很有帮助。