【问题标题】:Android: send activity (this) to class in Thread not workingAndroid:将活动(this)发送到线程中的类不起作用
【发布时间】:2015-07-02 10:28:09
【问题描述】:

我想将this activity 发送给class,但无法正常工作

main.java:

新线程(new Runnable() {

            @Override
            public void run() {
                final LinearLayout lnrPost = (LinearLayout) findViewById(R.id.lnrPost);
                Cmd.readD(lnrPost, this);
                ......

cmd.java:

 public class cmd {

        public static void readD(LinearLayout viewMain, Activity context) {
                LayoutInflater inflater = context.getLayoutInflater();
                View viewIn = inflater.inflate(R.layout.post, null);
                ......

错误:

 The method readD(LinearLayout, Activity) in the type Cmd is not applicable for the arguments (LinearLayout, new Runnable(){})

【问题讨论】:

  • 我的回答错了,对不起@Mohammad。检查其他答案,他们是对的。我误解了这个问题。

标签: android multithreading android-activity


【解决方案1】:

你的错误清楚地提到你正在传递Runnable所以

更改以下行

Cmd.readD(lnrPost, this);

Cmd.readD(lnrPost, yourActivityName.this);

希望对你有帮助。

【讨论】:

  • 谢谢,在 cmd.java 中我使用 addview。但崩溃的应用程序。 viewMain.addView(viewIn);
【解决方案2】:

您要发送什么?活动还是上下文?

如果要发送活动,请尝试

   Cmd.readD(lnrPost, MainActivity.this);

如果要发送上下文,请尝试

   Cmd.readD(lnrPost,getBaseContext());

【讨论】:

    【解决方案3】:

    在您的代码中,您通过引用 this 来发送一个对象,该对象指向当前对象,即 Runnable。 如果您想发送活动,请使用

    Cmd.readD(lnrPost, MainActivity.this);
    

    如果要发送上下文可以使用相同的方法或使用

    Cmd.readD(lnrPost, getApplicationContext());
    

    但我想知道为什么您的 IDE 在运行之前没有显示错误..

    【讨论】:

    • 他的 IDE 确实表明了这一点。他提到的错误我猜不是运行时/编译时异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    相关资源
    最近更新 更多