传递相同活动的不同数据以执行不同的操作

时间:2017-11-22 16:53:26

标签: android android-activity

我是Android Studio中的Noob,并且一直在搞这个问题。

我有一个主要活动,包含不同的Imagebuttons来执行不同的任务。 Main Menu

现在,我已经制作了不同的子活动(速度,质量等,使用单独的java文件),我正在使用主要活动的意图在它们之间来回走动。但是这样,我必须用9进行9次活动java类文件,它使应用程序没有被优化。

我想知道如何使用具有Spinners,TextViews,EditText等的单个活动布局(例如:A),当主要活动传递A上的数据时,我将能够执行计算。 就像我选择质量或速度一样,旋转器数据将会改变,并且将相应地引用具有各自逻辑的独立java类文件。 像这样。 Speed ActivityMass 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类文件。

0 个答案:

没有答案