首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中的两个活动之间传递值。

在java中的两个活动之间传递值。
EN

Stack Overflow用户
提问于 2019-01-15 23:13:20
回答 2查看 62关注 0票数 0

我正在尝试将一个值从一个活动中的ArrayList (LensActivity)传递到我的MainActivity上的TextView。在这个网站上,我找到了Intent方法,并在尝试它,但似乎无法传递它,信息在字符串lensString中被获取,并被传递给Intent,但在Main Activity中,似乎没有在TextView上传递或获取,在一些实验中,由于getIntent在MainActivity上,我得到了一个空指针。

这是LensActivity的代码,它有发送信息的按钮。

代码语言:javascript
复制
    package com.komorebiestudio.cam_report_funcionality;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;

public class LensActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private LensAdapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    private TextView LensChange;
    private String lensString;


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

        Intent lensIntent = new Intent(LensActivity.this,MainActivity.class);
        lensIntent.putExtra("LensIntent",lensString);


        final ArrayList <LensItem> lensList = new ArrayList<>();
        lensList.add(new LensItem(R.drawable.zeiss,"24mm","Zeiss Compact Prime"));
        lensList.add(new LensItem(R.drawable.ic_camera,"35mm","Angenieux"));
        lensList.add(new LensItem(R.drawable.cooke,"50mm","Cooke S5I"));

        mRecyclerView = findViewById(R.id.lens_list);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(this);
        mAdapter = new LensAdapter(lensList);
        LensChange = findViewById(R.id.lensinfo);

        mRecyclerView.setLayoutManager(mLayoutManager);
        mRecyclerView.setAdapter(mAdapter);

        final Intent ChangeLens = new Intent(this, MainActivity.class);

        mAdapter.setOnItemClickListener(new LensAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
               //Crea String con la informacion de posicion y texto del lente
                String lensPosition = lensList.get(position).getLens();
                lensString = lensPosition;
                Toast.makeText(getApplicationContext(),"this is " + lensString , Toast.LENGTH_SHORT).show();
                startActivity(new Intent(LensActivity.this,MainActivity.class));
            }
        });

    }




}

这是接收它的MainActivity的代码。

代码语言:javascript
复制
    package com.komorebiestudio.cam_report_funcionality;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements FpsDialog.FpsDialogListener{

    private TextView textViewinfo1;
    private Button button1;
    private  Button lensButton;
    private TextView lensInfo;

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


        lensInfo = findViewById(R.id.lensinfo);
        lensInfo.setText(getIntent().getStringExtra("LensIntent"));
        textViewinfo1 = findViewById(R.id.info1);
        button1 = findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view) {
                openDialog();
            }
        });
        lensButton = findViewById(R.id.lensbutton);
        lensButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,LensActivity.class));
            }
        });
    }


    public void openDialog(){
        FpsDialog fps_dialog = new FpsDialog();
        fps_dialog.show(getSupportFragmentManager(),"Fps Dialog");

    }

    @Override
    public void applyText(String fpsinfo) {
        textViewinfo1.setText(fpsinfo);

    }




}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-15 23:28:15

在您的LensActivity中,您正在创建一个从未使用过的意图。意图是这样的:

代码语言:javascript
复制
Intent lensIntent = new Intent(LensActivity.this,MainActivity.class);
lensIntent.putExtra("LensIntent",lensString);

相反,您应该在单击侦听器项中创建它。只需删除上面的代码,并按如下方式修改监听器:

代码语言:javascript
复制
mAdapter.setOnItemClickListener(new LensAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(int position) {
           //Crea String con la informacion de posicion y texto del lente
            String lensPosition = lensList.get(position).getLens();
            lensString = lensPosition;
            Intent lensIntent = new Intent(LensActivity.this,MainActivity.class);
            lensIntent.putExtra("LensIntent",lensString);
            Toast.makeText(getApplicationContext(),"this is " + lensString , Toast.LENGTH_SHORT).show();
            startActivity(lensIntent);
        }
    });
票数 0
EN

Stack Overflow用户

发布于 2019-01-15 23:30:50

为变量lensString赋值后,需要使用putExtra方法

代码语言:javascript
复制
mAdapter.setOnItemClickListener(new LensAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(int position) {
           //Crea String con la informacion de posicion y texto del lente
            String lensPosition = lensList.get(position).getLens();
            lensString = lensPosition;
            lensIntent.putExtra("LensIntent",lensString);
            Toast.makeText(getApplicationContext(),"this is " + lensString , Toast.LENGTH_SHORT).show();
            // Notice that you are not using your previously created intent in you 
            // original code.  
            startActivity(lensIntent);
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54201687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档