来自 Android 中不同类的 setContentView(R.layout.xy)

Posted

技术标签:

【中文标题】来自 Android 中不同类的 setContentView(R.layout.xy)【英文标题】:setContentView(R.layout.xy) from different Class in Android 【发布时间】:2021-04-20 23:24:32 【问题描述】:

我根据不同的教程制作了一款应用,但有一个主要问题。

通常我在 MainActivity.java 类中设置所有布局视图:

public class MainActivity extends AppCompatActivity 
@Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

            setContentView(R.layout.layoutA);
    

public void whenClicked (View view)
    setContentView(R.layout.layoutB);
    

// and so on..

在 MainActivity.java 的某个时刻,我调用了第二个类,它为我做了一些 mysql 的事情,现在我希望这个类在成功的情况下 setContentView(R.layout.layoutC)。

这是 MainActivity 的部分:

BackgroundWorker backgroundWorker = new BackgroundWorker(this);
backgroundWorker.execute(type, dataA, dataB, dataC, dataD);

这是我要设置 ContentView 的 BackgroundWorker.java 的头:

public class BackgroundWorker extends AsyncTask<String, Void, String> 

    Context context;

    BackgroundWorker(Context ctx)
        context = ctx;
    

    @Override
    protected String doInBackground(String... params) 

         // do some mysql stuff..
    

如果有人能提示我如何在我的情况下执行此操作,那就太好了。我尝试了很多来自 *** 的建议,但都没有成功。

谢谢!

【问题讨论】:

你不能这样做......只有同一个组件可能会触及它的视图。恕我直言,整个概念毫无意义,因为通常会从后台线程回调。只需使用 androidX 导航组件并导航片段。 AsyncTask 也被弃用了。 【参考方案1】:

三个提示:

为你的 AsyncTask 添加一个 Calback 参数。

或者添加一个接口。

或者覆盖主要活动中的 onPostExecute。

【讨论】:

以上是关于来自 Android 中不同类的 setContentView(R.layout.xy)的主要内容,如果未能解决你的问题,请参考以下文章

什么类型可以保存 C++ 中不同类的成员函数指针?

Android jetpack compose NoSuchMethodError: No static method setContent

如何填充散点图matplotlib中不同类的区域?

为啥来自 xml Web 服务的字符串在 Android TextView 中不显示新行?

可视化Java框架中不同类和接口之间的关系

如何将用户的TextFormField输入传递给flutter中不同类的按钮