我有两个活动屏幕:创建和查看。 创建是用户创建购物清单的地方。 查看是他们查看列表的地方(并且仍然可以添加项目)。
更新: 有人可能会说,为什么不使用一个活动而不是使两个活动基本相同,但这就是我计划的方式。我想要这样,当您通过在创建屏幕上按FAB添加微调器时,可以从中选择值。然后,当您返回到主菜单,然后回到查看屏幕时,这些微调器和从“创建”屏幕中选择的值也会显示在此处。另外,我想要它,因此当您关闭应用程序并重新打开它时,您选择的所有微调器和值仍然会出现。如有任何疑问,请发表评论。
我很欣赏下面带有示例的帖子,但是对于是否适合我的情况我感到困惑!
下面是我的create.java代码。 (view.java具有完全相同的代码,只是在地方使用.view而不是.create,还有一些额外的代码。)
create.java
public class create extends AppCompatActivity {
private LinearLayout mLinearLayout;
private ArrayList<SearchableSpinner> mSpinners;
private List<AppCompatButton> mButtons = new ArrayList<>();
private List<CheckBox> mCheckboxes = new ArrayList<>();
private List<TextView> mTextviews = new ArrayList<>();
private List<EditText> mEdittexts = new ArrayList<>();
private List<View> mViews = new ArrayList<>();
private Map<String, String> numberItemValues = new HashMap<>();
List<String> itemList = new ArrayList<>();
//Button buttontest;
// TextView textview;
// CheckBox checkbox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
GlobalClass globalClass = (GlobalClass) this.getApplicationContext();
ArrayList<String> items = new ArrayList<>();
items.add(String.valueOf(mSpinners)); // add you selected item
globalClass.setItems(items);
mSpinners = new ArrayList<>();
mLinearLayout = findViewById(R.id.my_linearLayout);
//code for the add button to add more items
FloatingActionButton floatingActionButton =
(FloatingActionButton) findViewById(R.id.fab);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getBaseContext(), "Item added!", Toast.LENGTH_SHORT).show();
// Handle ze click.
final Spinner spinner = makeSpinner();
mLinearLayout.addView(spinner);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) spinner.getLayoutParams();
layoutParams.setMargins(5, 100, 10, 0); //top 70
Resources resources = getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
layoutParams.height = (int) (70 * ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT)); //80
layoutParams.width = (int) (240 * ((float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT)); //240
spinner.setLayoutParams(layoutParams);
final View newView = makeView();
//Add a new view
mLinearLayout.addView(newView);
mViews.add(newView);
final EditText newEdittext = makeEdittext();
mLinearLayout.addView(newEdittext);
mEdittexts.add(newEdittext);
final int listSize = mViews.size();
//code for deleting the said item.
newView.setOnClickListener(new View.OnClickListener() {
//start
@Override
public void onClick(View view) {
//when the 'new button' is pressed, alert shows if you are sure you want to delete the item or not.
final View.OnClickListener context = this;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(create.this);
// set title
alertDialogBuilder.setTitle("Delete Item");
// set dialog message
alertDialogBuilder
.setMessage("Are you sure you want to delete this item?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
if (listSize > 0) {
mCheckboxes.get(listSize - 1).setVisibility(View.GONE);
mSpinners.get(listSize - 1).setVisibility(View.GONE);
mViews.get(listSize - 1).setVisibility(View.GONE);
mTextviews.get(listSize - 1).setVisibility(View.GONE);
mEdittexts.get(listSize - 1).setVisibility(View.GONE);
Toast.makeText(getBaseContext(), "Item removed.", Toast.LENGTH_SHORT).show();
}
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
});
//Add a new checkbox
final CheckBox newCheckbox = makeCheckbox();
mLinearLayout.addView(newCheckbox);
//TODO add checkbox to your list
mCheckboxes.add(newCheckbox);
final TextView newTextview = makeTextview();
mLinearLayout.addView(newTextview);
mTextviews.add(newTextview);
//TODO Add the spinner on item selected listener to get selected items
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String currentItem = itemList.get(position);
String aisleNumber = numberItemValues.get(currentItem);
//TODO you can use the above aisle number to add to your text view
//mTextviews.get(mTextviews.size() -1).setText(aisleNumber);
newTextview.setText(aisleNumber);
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// code here
}
});
}
});
}
/* //creates the 3 buttons on the side.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.create_menu, menu);
return true;
}
*/
//use a relative layout and specify which ones are to layout_toRightOf and layout_below
//DUPLICATING ITEMS WHEN FAB IS PRESSED//
private CheckBox makeCheckbox() {
//Create new Checkbox
CheckBox checkbox = new CheckBox(this);
// Setup layout
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
//setup relative layout for the positioning of the objects
/* RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
relativeParams.addRule(RelativeLayout.RIGHT_OF, textview); //can't resolve symbol textview
)
checkbox.setLayoutParams(relativeParams);*/
checkbox.setLayoutParams(layoutParams);
return checkbox;
}
private TextView makeTextview() {
//create new textview
TextView textview = new TextView(this);
//setup layout
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
textview.setLayoutParams(layoutParams);
textview.setText("ihi");
return textview;
}
private EditText makeEdittext() {
//create new edittext
EditText edittext = new EditText(this);
//setup layout
final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(50, 50); // Width , height
edittext.setLayoutParams(lparams);
edittext.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
return edittext;
}
private View makeView() {
//create new View
View view = new View(this);
view.setBackgroundColor(Color.parseColor("#ffffff"));
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, 100);
new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, 50);
//LinearLayout.LayoutParams.MATCH_PARENT,
// LinearLayout.LayoutParams.WRAP_CONTENT);
view.setClickable(true);
view.setLayoutParams(layoutParams);
//setup layout
return view;
}
private Spinner makeSpinner() {
//opens csv
InputStream inputStream = getResources().openRawResource(R.raw.shopitems);
CSVFile csvFile = new CSVFile(inputStream);
//TODO I made this variable global, declared it at the very top of this file
itemList = csvFile.read();
//Create new spinner
// SearchableSpinner spinner = (SearchableSpinner) new Spinner(this, Spinner.MODE_DROPDOWN);
SearchableSpinner spinner = new SearchableSpinner(this);
// Setup layout
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
spinner.setLayoutParams(layoutParams);
MyListAdapter adapter = new MyListAdapter(this, R.layout.listrow, R.id.txtid, itemList);
spinner.setAdapter(adapter);
//Add it to your list of spinners so you can retrieve their data when you click the getSpinner button
mSpinners.add(spinner);
return spinner;
}
private class CSVFile {
InputStream inputStream;
public CSVFile(InputStream inputStream) {
this.inputStream = inputStream;
}
public List<String> read() {
List<String> resultList = new ArrayList<String>();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String line;
while ((line = reader.readLine()) != null) {
String[] row = line.split(",");
//TODO I edited this part so that you'd add the values in our new hash map variable
numberItemValues.put(row[1], row[0]);
resultList.add(row[1]);
}
} catch (IOException e) {
Log.e("Main", e.getMessage());
} finally {
try {
inputStream.close();
} catch (IOException e) {
Log.e("Main", e.getMessage());
}
}
return resultList;
}
}}
创建xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackground"
android:minHeight="170dp"
tools:context=".create"
tools:layout_editor_absoluteY="81dp">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="438dp"
android:fillViewport="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="0dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</ScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="60dp"
android:layout_height="70dp"
android:layout_gravity="bottom|end"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="16dp"
android:layout_marginStart="8dp"
android:src="@android:drawable/ic_input_add"
app:backgroundTint="@color/colorCreate"
app:elevation="6dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:pressedTranslationZ="12dp"
android:tint="@color/colorBackground"/>
<View
android:id="@+id/subheading"
android:layout_width="match_parent"
android:layout_height="83dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginStart="1dp"
android:layout_marginTop="2dp"
android:background="@color/colorBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
/>
<TextView
android:id="@+id/example"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="492dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
android:hint="test"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view"
android:layout_width="320dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="76dp"
android:background="@color/colorText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/view2"
android:layout_width="320dp"
android:layout_height="1dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="28dp"
android:background="@color/colorText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="12dp"
android:fontFamily="@font/droid_sans"
android:text="@string/done_label"
android:textColor="@color/colorText"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/view2" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="128dp"
android:layout_marginRight="128dp"
android:layout_marginTop="8dp"
android:fontFamily="@font/droid_sans"
android:text="@string/aisle_label"
android:textColor="@color/colorText"
android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/view"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view2"
app:layout_constraintVertical_bias="1.0" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginEnd="32dp"
android:layout_marginRight="32dp"
android:layout_marginTop="5dp"
android:fontFamily="@font/droid_sans"
android:text="@string/qty_label"
android:textColor="@color/colorText"
android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/view"
app:layout_constraintEnd_toStartOf="@+id/textView4"
app:layout_constraintTop_toBottomOf="@+id/view2"
app:layout_constraintVertical_bias="0.7" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:fontFamily="@font/droid_sans"
android:text="@string/item_label"
android:textColor="@color/colorText"
android:textSize="20sp"
app:layout_constraintBottom_toTopOf="@+id/view"
app:layout_constraintEnd_toStartOf="@+id/textView3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view2"
app:layout_constraintVertical_bias="1.0" />
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:5)
[已更新]
因此,基本上,您有2个活动类,create
和view
(如上所述)。
以全局形式声明微调框。该代码的所有其他说明均以注释的形式。
public class create extends AppCompatActivity {
private LinearLayout mLinearLayout;
private ArrayList<SearchableSpinner> mSpinners;
//TODO add the below list of buttons and checkboxes
//private List<AppCompatButton> mButtons = new ArrayList<>();
private List<CheckBox> mCheckboxes = new ArrayList<>();
private List<View> mViews = new ArrayList<>();
Button buttonGo;
//define spinner here
Spinner spinner;
//your own code
......
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getBaseContext(), "Item added!", Toast.LENGTH_SHORT).show();
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
// Handle the click.
//initialise your spinner here
spinner = makeSpinner();
//your code as usual
}
//put this some where in your code where you want to start another activity after your operations are done (usually in onClick of something)
{
Intent i= new Intent(this, YourSecondClass.class);
//Create the bundle
Bundle bundle = new Bundle();
//Add your data to bundle one by one, in this case passing spinner selected value,
//replace val1 with your own variable name
bundle.putString("val1", spinner.getSelectedItem().toString());
//if you have more spinner,add in similar way
bundle.putString("val2", spinner2.getSelectedItem().toString());
//Add the bundle to the intent
i.putExtras(bundle);
startActivity(i);
}
}
}
以下是view
活动的示例。
public class view extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
//initialise your spinner here
spinner = makeSpinner();
//Get bundle from previous intent(activity)
Bundle bundle = getIntent().getExtras();
//Extract the data…
String val1= bundle.getString("val1");
String val2= bundle.getString("val2");
//USUALLY, you will have a list of items in your spinner, do what you should do, this is just an example.
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.select_state, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//set the adapter
mSpinner.setAdapter(adapter);
if (val1 != null) {
int spinnerPosition = adapter.getPosition(val1);
spinner.setSelection(spinnerPosition);
}
...
}
...
}
注意:这只是一个指导或“框架”,为您提供了一些有关应将代码放置在何处的线索。不能完全解决,因为您的代码太长,我无法保证其正确,因此没有包括它们。
答案 1 :(得分:1)
buttonGo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(spinner!=null){
Intent i= new Intent(create.this, viewscreen.class);
//Create the bundle
Bundle bundle = new Bundle();
//Add your data to bundle
bundle.putString("dropdown", dropdown_value);
//Add the bundle to the intent
i.putExtras(bundle);
startActivity(i);
}
});
答案 2 :(得分:1)
public class create extends AppCompatActivity {
private LinearLayout mLinearLayout;
private ArrayList<SearchableSpinner> mSpinners;
//TODO add the below list of buttons and checkboxes
// private List<AppCompatButton> mButtons = new ArrayList<>();
private List<CheckBox> mCheckboxes = new ArrayList<>();
private List<View> mViews = new ArrayList<>();
Button buttonGo;
Spinner spinner;
......
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getBaseContext(), "Item added!", Toast.LENGTH_SHORT).show();
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT);
// Handle the click.
// Handle ze click.
//final Spinner spinner = makeSpinner();
//mLinearLayout.addView(spinner);
spinner = makeSpinner();
}
答案 3 :(得分:1)
我不知道你为什么仍然陷入这个问题。当您知道要在“活动”中传递值时。如果我考虑到您的问题,就会想到各种解决方案。
解决方案1:使用 @Angus 解决方案,当您遵循他的回答时,我检查了您的代码。
基本上,您必须将一个值传递给下一个活动,例如位置/微调器选择的值。
bundle.putString("selectedPos", spinner.getSelectedItemPosition());
或
bundle.putString("selectedItem", ((String) spinner.getSelectedItem()));
解决方案2:,您有 SharedPreference 可以将这些值存储在第一个活动中,然后在第二个活动中获取已保存的值。
解决方案3:我不建议使用Application类来存储变量,但是可以!这是一个解决方案。像this answer。我不使用Application类来存储值,因为在手动使用后我们需要清除字段,以恢复RAM使用情况。
解决方案4::正如您所说的,两个“活动”几乎相同,那么为什么不只使用一个“活动”并相应地管理“视图”呢?
修改
如果我说对了,那么您可以将生成的Spinners项目列表和选定的项目传递给下一个活动。您可以轻松通过 Parcelable List
。
“第一项活动”通过了微调器模型列表。
ArrayList<ModelSpinner> list = new ArrayList<>();
list.add(new ModelSpinner(itemsList, (String) spinner.getSelectedItem()));
startActivity(new Intent(this, MainActivity.class).putParcelableArrayListExtra("key", list));
第二个活动获取列表并根据视图进行制作
ArrayList<ModelSpinner> list = getIntent().getParcelableArrayListExtra("key");
for (ModelSpinner spinner : list) {
// render spinners
Spinner spinner = makeSpinner(spinner.getItems(),spinner.getSelectedValue());
// todo create method makeSpinner(List<String> list, String selectedItem), add this spinner to your activity.
}
ModelSpinner.class
public class ModelSpinner implements Parcelable {
private ArrayList<String> items;
private String selectedValue;
// getter setter
public ModelSpinner(ArrayList<String> items, String selectedValue){
this.items = items;
this.selectedValue = selectedValue;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringList(this.items);
dest.writeString(this.selectedValue);
}
public ModelSpinner() {
}
protected ModelSpinner(Parcel in) {
this.items = in.createStringArrayList();
this.selectedValue = in.readString();
}
public static final Parcelable.Creator<ModelSpinner> CREATOR = new Parcelable.Creator<ModelSpinner>() {
@Override
public ModelSpinner createFromParcel(Parcel source) {
return new ModelSpinner(source);
}
@Override
public ModelSpinner[] newArray(int size) {
return new ModelSpinner[size];
}
};
}
答案 4 :(得分:1)
此方案的最佳解决方案是使用架构组件库中的ViewModel和LiveData,这将为您提供两个Activity中数据的一致性。用于活动的单个ViewModel和用于两个活动的共享LiveData的单个ViewModel,当您从任何Activity更新任何LiveData时,这将很有帮助,它将反映在观察ViewModel中定义的LiveData的所有Activity中。
答案 5 :(得分:1)
您将上下文称为“ This”,但是是从覆盖接口中方法的方法内部调用它的,但是该方法不在此类中,因此不知道“ This”是什么,因此无法解决为此,请在您创建类中:
public class Create extends AppCompatActivity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
context = this;
buttonGo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(spinner!=null){
Intent i= new Intent(context, View.class);
startActivity(i);
}
};
}
}
您可以按意图传递数据,也可以使用Create类中的静态变量传递数据。
创建课程:
public class Create extends AppCompatActivity {
public static String optionSelected;
//other code....
spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Create.optionSelected = parent.getItemAtPosition(position).toString();
}
});
//other code....
}
在您的View Class to call optionSelected:
public class View extends AppCompatActivity {
String dropdown_value= Create.optionSelected;
// rest of code
}
如果要使用类别适配器类:
public class CategoryAdapter extends FragmentPagerAdapter {
public CategoryAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new CreateFragment();
case 1:
return new ViewFragment();
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
}
答案 6 :(得分:0)
我认为您要做的是将用户选择的项目从创建屏幕传递到查看屏幕。
您可以使用全局类来存储所选项目的值。并像普通的Java类一样使用它。
public class GlobalClass extends Application {
ArrayList<String> items = new ArrayList<>();
public ArrayList<String> getItems() {
return items;
}
public void setItems(ArrayList<String> items) {
this.items = items;
}
}
在清单文件的应用程序标记中定义
<application
android:name=".GlobalClass"
并在两个活动的onCreate
函数中像这样使用它
globalClass = (GlobalClass) this.getApplicationContext();
然后,您可以使用getter和setter来访问所选项目列表。 在创建活动中,
ArrayList<String> items = new ArrayList<>();
items.add(item); // add you selected item
globalClass.setItems(items);
查看活动中
ArrayList<String> items = globalClass.getItems();
答案 7 :(得分:0)
我有类似的要求。我用不同的逻辑解决了它。
这将使控制和开发流程变得友好。希望这能很好地满足您的要求。
存储视图并进行传输并不是一个更好的主意,因为这会在以后导致开发复杂性。
对于n个微调器,如果有多个数据,则可以使用产品对象的ArrayList并动态创建微调器视图。
答案 8 :(得分:-1)
好吧,我建议做的是创建一个ArrayList
的{{1}},以跟踪您在第一个Integer
至Activity
中创建的微调框数量以及每个微调框的位置,即ArrayList.size()
中的值。
因此,首先在第一个ArrayList
中单击按钮时,将以下代码放在onClick方法中:
Activity
然后在第二个ArrayList<Integer> spinnerList = new ArrayList<>();
for(int i = 0; i < mSpinners.size(); i++) {
spinnerList.add(mSpinners.get(i).getSelectedItemPosition());
}
Bundle newBundle = new Bundle();
newBundle.putIntegerArrayList("arraylist", spinnerList);
Intent newIntent = new Intent(create.this, view.class);
newIntent.putExtra("extraBundle", newBundle);
startActivity(newIntent);
(视图Activity
)中获得Activity
,如下所示:
ArrayList
获取Intent gotIntent = getIntent();
Bundle bundle = getIntent().getBundleExtra("extraBundle");
ArrayList<Integer> spinnerArrayList = bundle.getIntegerArrayList("arraylist");
后,请创建与ArrayList
大小相同的For loop
次,即您拥有的微调器数量,并添加用于添加微调器和其他代码的代码观看次数:
ArrayList