在android eclipse中,如何运行第二个类来执行某些命令?

时间:2012-11-18 23:50:39

标签: android eclipse class

例如,mainActivity.java文件实际上是集群的并且为了保持其清洁,我创建了第二个.java(类),我将在按下按钮时执行一些代码。我根本想不出怎么做。而且我不确定要使用哪些搜索条件,所以如果已经涵盖,我会道歉。

这是我在“测试”应用程序中的内容。

我有一个主要活动,上面有一个按钮。

package com.test.secondclass;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    Button startButton;
    final Intent second = new Intent(getApplicationContext(), testClass.class);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startButton = (Button)findViewById(R.id.button1);

        startButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                startActivity(second);

            }
        });
    }

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

}

现在这里是我制作的“第二”课程,现在记住这很短暂,我只是将它用于锻炼计划,然后再将其应用到我的实际课程中。

package com.test.secondclass;

import android.app.Activity;
import android.widget.Toast;

public class testClass extends Activity{

    public void onCreate(){
        Toast.makeText(getApplicationContext(), "Second class thinger started", Toast.LENGTH_LONG).show();
    }
}

如果我尝试这个,我会立即关闭一个力量。如果我在主要活动的最开始时注释掉“意图”部分,那么程序就会运行。但它没有做我想要的。明显。谢谢大家

3 个答案:

答案 0 :(得分:0)

添加OnClickListener以向testClass发送任何信息,如下所示(未经测试):

button.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        Intent secondIntent = new Intent();
        secondIntent.setClassName(myPackageName, "testClass");
        startActivityForResult(secondIntent, REQUEST_CODE);
});

引用herehere

答案 1 :(得分:0)

以下是我的观点:由于您尝试打​​开没有上下文的用户界面方法(例如Toast),您正在接收强制关闭。

重要提示:我假设你已经在manifest.xml文件中定义了这两个类!

在解释之前,我会做一个简短的说明: Toast :此类打开一条快速消息,接收上下文,消息和显示时间作为主要参数; 上下文:它是显示的“环境”。类似于视觉范围的东西,它定义了您拥有的资源。在大多数情况下,您可以使用 setContentView 方法设置它。

问题解释,在我看来:发生“崩溃”是因为您打开没有上下文的Toast消息。活动是一种非常类似于视图的UI控件。如果您调用一个新活动,它非常喜欢调用新页面,因此,新的上下文。在第二个活动中,我没有看到任何上下文。我认为你假设上下文是从第一个活动中保留的,但它并不是因为它是一个新的活动。

如何解决:

  • 在第二课中,使用 setContentView 定义布局视图,或者......
  • Service重新实现您的第二课程,并通过 startService 或...
  • 进行调用
  • 定义AIDL mechams(类似于之前的修复,但更复杂,更复杂,因为它启用了异步方法调用)。

希望它在某种程度上有所帮助。

答案 2 :(得分:0)

谢谢大家的答案!!在显示Toast消息后,我实际上能够使用“stopSelf()”命令执行我想要的操作。我实现了一个服务类,当我按下按钮时,调用testClass.java类并运行“toast”消息,然后立即通过“stopSelf()”命令退出。我通过包含一个“onDestroy()”方法来确保这一点,该方法还显示了一条简单的Toast消息,确认服务正在停止:)。我通常使用线程做这样的事情,但无论我做了多少格式化,它都使主要活动变得非常混乱。所以我想要一个我可以使用的单独课程。

对于评论者EfEs,我来自用于Windows的C#语言编程。 Android对我来说是一个新的游乐场,我还在学习。我觉得我做得很好,但不知道怎么做我问的。但我明白了。并且感谢清除android中的Activity就像C#中的“WindowsForm”,它是用户的全新GUI。我不知道。但感谢所有人帮助我发帖!