android-仅替换同一活动中的内容

android-仅替换同一活动中的内容,android,android-activity,Android,Android Activity,我有一个MainActivity,它包含ImageView、TextView和3个可单击的按钮 单击按钮后,我想在SQlite dtb中更改一些内容,并根据这些内容加载不同的数据,但在同一活动中再次显示它 public void ClickBtn(View v) { //insertData(String... Intent intent = new Intent(MainActivity.this, MainActivity.class);

我有一个MainActivity,它包含ImageView、TextView和3个可单击的按钮

单击按钮后,我想在SQlite dtb中更改一些内容,并根据这些内容加载不同的数据,但在同一活动中再次显示它

     public void ClickBtn(View v)
    {
//insertData(String...

        Intent intent = new Intent(MainActivity.this, MainActivity.class);
        startActivity(intent);
    }
所以一般来说,在Main Activity.js中,我从ID获取数据,该ID在之前被单击并显示该数据。MainActivity应该无限次地用于显示不同的数据

布局将始终相同-ImageView、TextView和3个可单击按钮,只是文本会有所不同

问题是,我如何才能只更改同一活动中的内容?
我不认为Intent Intent=newintentmainactivity.this,MainActivity.class;从当前活动可以打开相同的活动…

您确实需要学习基础知识

当您在android中工作时,XML布局文件仅仅是蓝图,最终被解析为反射创建的匿名视图实例,该实例包含XML布局的每个成员,并将有效的XML标记参数应用于它们。因此,您处理的不是“布局”,而是java/kotlin对象,它可以是:

参考 变异 取代 因此,如果您想更改内容,第一步是保留对每个对象的引用:ImageView、TextView和Buttons,并将负责填充它们的代码移动到一个新方法,这样您可以在加载activity onCreate或单击按钮时调用它。这样,相同的活动可以一遍又一遍地执行相同的操作

最后,持续的娱乐活动是一个可怕的想法。对于您生成的每个对象和活动都是对象,与其他所有内容一样,您需要X+Y内存,其中X是对象类的所有成员的总和,Y是实例化所需的所有操作的总和,因此,通过不断重新创建活动,您浪费了设备资源,另外还有一个问题,那就是产生大量相同的活动


先看一本java书,然后看一本kotlin书。这会让你的生活更轻松。

我就是这样解决的。只替换文本而不刷新活动。还通过内存监控对其进行了数百次测试,绝对不会影响设备内存

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



//get from dtb
        int room = 1; int a1 = 2; int a2 = 3; int a3 =4;

        TextView views = findViewById(R.id.text1);
        views.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
              //get from dtb - img, text where room = a1;

                        TextView vv = findViewById(R.id.textof);
                vv.setText("text from dtb");
            }
        });


        TextView view2 = findViewById(R.id.text2);
        view2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                //get from dtb - img, text where room = a2;

                TextView vv = findViewById(R.id.textof);
                vv.setText("another text from dtb");
            }
        });
    }

获取新数据并更新视图我应该在单击按钮时使用invalidate吗?e、 g.视图组vg=findViewById R.id.mainLayout;使无效;然后使用setContentViewR.layout.mainscreen;,而不是Intent?您可以使用setText等更新视图,尽管您也可以使用SetContentView更改布局。我不想重新创建活动,我只想更改该活动中的文本,而不重新创建它。就像在HTML中一样,我可以无限次地替换DIV的内容而不刷新页面,所以这在android上也是可能的;TextView viewx=findviewbydr.id.texto;viewx.setTexttxt;文本在不刷新活动的情况下更改是的,viewx是对textView的引用,因此对引用所做的更改将修改屏幕中的实际对象。在面向对象语言中,这就是刷新内容的方式。不要错误地将android XML与HTML混淆,web前端和JVM平台是完全不同的。