如何将值从文本视图传递到Android中的其他活动的变量?

时间:2016-03-13 06:30:05

标签: android

我遇到问题[从数据库]将文本视图结果分配给新变量。 文本视图从数据库中检索数据没有问题。

现在问题是我需要链接值" 4"在文本视图中的新变量。然后使用按钮功能进行下一个活动。

public class MainActivity extends Activity {

TextView name1;
TextView rating1;
TextView sourse1;
Button Btngetdata;
int ratingvalue;

// URL to get contacts JSON
private static String url = "http://lawrencetucksoon.netau.net/json_get_data.php";

// JSON Node names
private static final String TAG_APPINFO = "appinfo";
private static final String TAG_NAME = "name";
//private static final String TAG_UPDATE_PATCH = "update patch";
//private static final String TAG_PUBLISH_YEAR = "publish year";
private static final String TAG_RATING = "rating";
private static final String TAG_SOURSE = "sourse";

JSONArray app = null;

/**
 * ATTENTION: This was auto-generated to implement the App Indexing API.
 * See https://g.co/AppIndexing/AndroidStudio for more information.
 */

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    name1 = (TextView) findViewById(R.id.name);
    rating1 = (TextView) findViewById(R.id.rating);
    sourse1 = (TextView) findViewById(R.id.sourse);
    Btngetdata=(Button)findViewById(R.id.btn1);
    Btngetdata = (Button)findViewById(R.id.btn1);
    Btngetdata.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            System.out.println(ratingvalue);
        }
    });
}

public void selectapp (View view)
{
    boolean checked = ((RadioButton) view).isChecked();
    switch (view.getId())
    {
        case R.id.radio_365:
            if (checked)
            {
                new JSONParse().execute();
                if((Integer.parseInt(rating1.getText().toString()) ) <=3)
                {
                    ratingvalue =0;
                }
                else
                  {
                   ratingvalue = 1;
                  }
            }
           break;
        case R.id.radio_candy: //if (R.id.rating > 3){
            // ratingvalue = 0;
            if (checked)
           {
               new JSONParse1().execute();

               }
               // else
             //  {
              //     ratingvalue = 1;
              // }

           // }
            break;
       case R.id.radio_FB:
           if (checked)
            {
                new JSONParse().execute();

           }
            break;
        case R.id.radio_summoner:
            if (checked)
            {
                new JSONParse1().execute();

            }

            break;
    }

}

/**
 * Async task class to get json by making HTTP call
 */
private class JSONParse extends AsyncTask<Void, Void, JSONObject> {

    ProgressDialog pDialog;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        name1 = (TextView) findViewById(R.id.name);
        rating1 = (TextView) findViewById(R.id.rating);
        sourse1 = (TextView) findViewById(R.id.sourse);

        // Showing progress dialog
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Getting Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected JSONObject doInBackground(Void... args) {
        // Creating service handler class instance
        JSONParser jParser = new JSONParser();

        //  Getting JSON from URL
        JSONObject json = jParser.getJSONFromUrl(url);
        return json;

    }

    @Override
    protected void onPostExecute(JSONObject json) {
        //super.onPostExecute(result);
        // Dismiss the progress dialog
       // if (pDialog.isShowing())
            pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        try {
            // Getting JSON Array
            app = json.getJSONArray(TAG_APPINFO);
            JSONObject c = app.getJSONObject(0);

            // Storing  JSON item in a Variable
            String name = c.getString(TAG_NAME);
            String rating = c.getString(TAG_RATING);
            String sourse = c.getString(TAG_SOURSE);

            //Set JSON Data in TextView
            name1.setText(name);
            rating1.setText(rating);
            sourse1.setText(sourse);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

}

private class JSONParse1 extends AsyncTask<Void, Void, JSONObject> {


    ProgressDialog pDialog;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        name1 = (TextView) findViewById(R.id.name);
        rating1 = (TextView) findViewById(R.id.rating);
        sourse1 = (TextView) findViewById(R.id.sourse);

        // Showing progress dialog
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Getting Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected JSONObject doInBackground(Void... args) {
        // Creating service handler class instance
        JSONParser jParser = new JSONParser();

        //  Getting JSON from URL
        JSONObject json = jParser.getJSONFromUrl(url);
        return json;

    }

    @Override
    protected void onPostExecute(JSONObject json) {
        //super.onPostExecute(result);
        // Dismiss the progress dialog
        // if (pDialog.isShowing())
        pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        try {
            // Getting JSON Array
            app = json.getJSONArray(TAG_APPINFO);
            JSONObject c = app.getJSONObject(1);

            // Storing  JSON item in a Variable
            String name = c.getString(TAG_NAME);
            String rating = c.getString(TAG_RATING);
            String sourse = c.getString(TAG_SOURSE);

            //Set JSON Data in TextView
            name1.setText(name);
            rating1.setText(rating);
            sourse1.setText(sourse);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

}

2 个答案:

答案 0 :(得分:0)

在第一个活动中,您需要将参数传递给intent

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("param", myTextView.getText().toString());
startActivity(intent);

然后在第二个活动onCreate

Intent intent = getIntent()
String value = intent.getStringExtra("param", null);

答案 1 :(得分:0)

你可以通过多种方式做到这一点。第一个是声明静态变量并将其设为 public 。然后你可以从其他活动中访问变量。例如,如果活动<{1>} A ,并且想要访问活动TextView中的值。您可以将变量声明为

B

然后根据需要设置变量的值。之后,当启动 B 活动时,访问所需的变量。例如

public static String someVariable;

虽然这种方法很简单但不被认为是一个不错的选择。好的选择是以意图发送值。对于意图,请参阅here