在android中启动intent后立即调用方法?

时间:2018-04-04 02:46:20

标签: java android

启动Intent然后调用Method? 在这两个类中,第二个类具有StartIntent。现在它只是启动第一堂课的意图。我想知道是否可以像往常一样从同一个onClickListener到第一个类的StartIntent,但是然后立即调用其中的defaultMap()方法。

有时我想简单地启动意图,有时我想启动意图然后调用该方法。 1)因此,我不能让第一个类的OnCreate调用defaultMap,因为我并不总是想要调用它。但也2)我不想调用defaultMap()类。我需要调用完整的类,以便它通过onCreate函数运行,然后转到defaultMap

第一类使用

public class Daily_Schedule extends AppCompatActivity {

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

    ......
    .......
    ......

}

public void defaultMap(){
    ......
    .......
    ......
}

使用第二类

 public class InRouteDisplay extends AppCompatActivity implements OnMapReadyCallback {

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

    home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent myIntent = new Intent(InRouteDisplay.this, DailySchedule.class);
            InRouteDisplay.this.startActivity(myIntent);

        }
    });
    .....
    ....
    .....

}

3 个答案:

答案 0 :(得分:0)

没有。发送类没有获取Activity的实例来调用它。您可以做的是在intent中将参数设置为USE_DEFAULT_MAP为1.您启动的活动可以查找该变量,并使用它来知道它应该调用defaultMap。

答案 1 :(得分:0)

在Daily_Schedule活动中使用if语句,并检查额外的是否已设置或为null。使用getIntent()方法。 check the answer of this

来自InRouteDisplay活动在调用InRouteDisplay.this.startActivity(myIntent);之前使用putextra传递意图数据

使用此链接指向如何将数据putextra到意图 Use this link's answer to know how to putextra data to the intent

答案 2 :(得分:0)

尝试以下方法:两种方式:1)使用putExtra()-------- 2)使用SharedPreferences

1)

Demo4.class:-----------

public class Demo5 extends AppCompatActivity {

private Button home;
private final String CALL_DEFAULT_MAP = "call_default_map";

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


    home = (Button) findViewById(R.id.home);

    home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Intent myIntent = new Intent(Demo5.this, Demo4.class);
            myIntent.putExtra(CALL_DEFAULT_MAP,"true");//1
            finish();
            startActivity(myIntent);

        }
    });

}


} 

Demo5.class ------

public class Demo4 extends AppCompatActivity {

private Button b;
private final String CALL_DEFAULT_MAP = "call_default_map";
private SharedPreferences p;


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

    p = getApplicationContext().getSharedPreferences("p_key",
            0);//2


    if(p != null){//2
        if(p.getBoolean(CALL_DEFAULT_MAP , false)){
            defaultMap();
        }
    }


    b = (Button) findViewById(R.id.b);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent myIntent = new Intent(Demo4.this, Demo5.class);
            finish();
            startActivity(myIntent);

        }
    });

}

public void defaultMap() {
    setBoolean(CALL_DEFAULT_MAP , false);//2
    Toast.makeText(getApplicationContext(),"defaultMap()---called",Toast.LENGTH_LONG).show();
}

public void setBoolean(String Name, boolean value)
{
    if(p != null){
        SharedPreferences.Editor editor = p.edit();
        editor.putBoolean(Name, value);
        editor.apply();
    }
}

} 

2)

Demo4.class ---------

public class Demo5 extends AppCompatActivity {

private Button home;
private final String CALL_DEFAULT_MAP = "call_default_map";
private SharedPreferences p;

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

    p = getApplicationContext().getSharedPreferences("p_key",
            0);

    home = (Button) findViewById(R.id.home);

    home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            setBoolean(CALL_DEFAULT_MAP , true);//2
            Intent myIntent = new Intent(Demo5.this, Demo4.class);
                            finish();
            startActivity(myIntent);

        }
    });

}

public void setBoolean(String Name, boolean value)
{
    if(p != null){
    SharedPreferences.Editor editor = p.edit();
    editor.putBoolean(Name, value);
    editor.apply();
    }
}

}

Demo5.class:----------------

/