我是Android Studio中的Noob,并且一直在搞这个问题。
我有一个主要活动,包含不同的Imagebuttons来执行不同的任务。 Main Menu
现在,我已经制作了不同的子活动(速度,质量等,使用单独的java文件),我正在使用主要活动的意图在它们之间来回走动。但是这样,我必须用9进行9次活动java类文件,它使应用程序没有被优化。
我想知道如何使用具有Spinners,TextViews,EditText等的单个活动布局(例如:A),当主要活动传递A上的数据时,我将能够执行计算。 就像我选择质量或速度一样,旋转器数据将会改变,并且将相应地引用具有各自逻辑的独立java类文件。 像这样。 Speed Activity和 Mass Activity
原谅我的英语。
让我们举个例子。
我的MainActivity.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:orientation="vertical"
tools:context="com.lovish1pandey.android.convertor.MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:background="@android:color/white"
android:onClick="Speed"
android:text="Speed"
android:textColor="@color/colorPrimary"
android:textSize="25sp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:background="@android:color/white"
android:onClick="Temperature"
android:text="Temperature"
android:textColor="@color/colorPrimary"
android:textSize="25sp" />
</LinearLayout>
其java类文件
package com.lovish1pandey.android.convertor;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void Temperature(View view){
Intent i = new Intent(this,Temp.class);
startActivity(i);
}
public void Speed(View view){
Intent i = new Intent(this,Speed.java);
startActivity(i);
}
}
现在我制作了速度与温度活动相似的Speed.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="5dp"
tools:context="com.lovish1pandey.android.convertor.Temp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif"
android:gravity="center"
android:text="Speed"
android:textColor="@android:color/black"
android:textSize="30sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:fontFamily="sans-serif"
android:text="From"
android:textColor="@android:color/black"
android:textSize="25sp" />
<Spinner
android:id="@+id/spinners_From"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Spinner>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:orientation="horizontal">
<TextView
android:id="@+id/to"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:fontFamily="sans-serif"
android:text="To"
android:textColor="@android:color/black"
android:textSize="25sp" />
<Spinner
android:id="@+id/spinners_To"
android:layout_width="match_parent"
android:layout_height="wrap_content"></Spinner>
</LinearLayout>
<EditText
android:id="@+id/Temp_Input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:hint="Value"
android:inputType="numberDecimal"
android:textColor="@android:color/holo_green_dark"
android:textSize="20sp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:fontFamily="sans-serif"
android:text="Calculate"
android:textColor="@android:color/black"
android:textSize="20sp"
android:onClick="Speed_Calculate"/>
<TextView
android:id="@+id/Temp_Value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="sans-serif"
android:textColor="@android:color/darker_gray"
android:textSize="30dp" />
在Temperature xml文件中。唯一的区别是我调用了Temperature_Calculate()
,这里是Speed的java类文件。
package com.lovish1pandey.android.convertor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class Speed extends AppCompatActivity {
Spinner spinnerFrom;
Spinner spinnerTo;
ArrayAdapter<CharSequence> adapter;
EditText input;
TextView output;
int fromChoice;
int toChoice;
float val;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_speed);
spinnerTo = (Spinner) findViewById(R.id.spinners_From);
spinnerFrom = (Spinner) findViewById(R.id.spinners_To);
input = (EditText) findViewById(R.id.Temp_Input);
output = (TextView) findViewById(R.id.Temp_Value);
From_Spinner();
To_Spinner();
}
public void From_Spinner() {
adapter = ArrayAdapter.createFromResource(this, R.array.Speed, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinnerFrom.setAdapter(adapter);
spinnerFrom.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
fromChoice = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void To_Spinner() {
adapter = ArrayAdapter.createFromResource(this, R.array.Speed, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinnerTo.setAdapter(adapter);
spinnerTo.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
toChoice = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
//Logic.
}
这个代码块在它们之间很常见。所以你可以看到有很多重复的代码。那么我怎样才能创建一个Activity A来接受主菜单中的数据,然后将数据放在spinners上并引用不同的java类文件。