在Android中调用第二个Java类的方法

时间:2014-12-08 16:01:02

标签: android class methods

好的,所以我把它简化为最低限度,以便解决和发出我的问题。

我有两节课。第二个类扩展了第一个类,并且有一个简单的toast消息。我从第一个oncreate调用第二类toast方法尝试并显示toast。程序中没有报告错误并编译。当它运行时,它会立即崩溃。如果我取消对第二类的调用,并将烤面包机放在第一类,它就可以工作,所以我知道烤面包机是正确的。

头等舱

package com.example.testingclasses;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class FirstClass extends ActionBarActivity {

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

        SecondClass toaster = new SecondClass();
        toaster.toastSC();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.first_class, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

第二课

package com.example.testingclasses;

import android.content.Context;
import android.widget.Toast;

public class SecondClass extends FirstClass {

    public void toastSC(){
        Context context = getApplicationContext();
            CharSequence text = "Toast from second class";
            int duration = Toast.LENGTH_LONG;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
    }
}

让我知道是否需要日志猫,但我确定这是一个代码问题。这里引用了几个站点,但我根本无法让它工作。哦,并做了一个像这样的简单的,但在Java中使用print语句并运行它并且所有调用都有效,所以这就是Android中的内容,据我所知,我根本就没有得到它。

感谢

2 个答案:

答案 0 :(得分:0)

继承很糟糕。为什么不执行以下操作?

public class SecondClass {

    public void toastSC(Context context) {
        CharSequence text = "Toast from second class";
        int duration = Toast.LENGTH_LONG;
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
}

并从您的Activity类

中调用它
new SecondClass().toastSC(this);

答案 1 :(得分:-1)

你不应该创建第二个活动。在清单中使用SecondClass,它将从SecondClass创建实例,然后使用this实例调用函数

SecondClass toaster = (SecondClass)this;
toaster.toastSC();