2013-07-30 58 views
3

我已經看了一下,但無法找到答案(可能真的很簡單)使用意圖開始不同的活動的問題。startActivity不適用於嵌套方法調用

我試圖啓用一個按鈕,當它被點擊時啓動另一個活動。

爲什麼這項工作:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button btn = (Button) findViewById(R.id.btn_Act2); 
    btn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      startActivity(new Intent("com.timsworth.ACTIVITY2")); 
     } 
    }); 
} 

但是,這並不工作:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button btn = (Button) findViewById(R.id.btn_Act2); 
    btn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      startAct(); 
     } 
    }); 
} 

public void startAct() { 
    startActivity(new Intent("com.timsworth.ACTIVITY2")); 
} 

乾杯。

回答

3

是出於onCreate()方法,所以你應該提到Context明確,在你的第二個代碼寫像這樣,

startActivity(new Intent(getApplicationContext(),"com.timsworth.ACTIVITY2")); 
+0

我認爲「融爲一體。 timsworth.ACTIVITY2「在你的情況下是錯誤的!因爲它只能與Intent(String action)的單參數一起使用 –

+0

我剛剛加了getAppplicationContext(),剩下的就是問題所有者的寫法:) –

+0

但是這些變成了兩個參數?而字符串只允許使用單個參數Intent() –

1

嘗試

public void startAct() { 
    startActivity(new Intent(yourCurrentActivity.this,com.timsworth.ACTIVITY2.class)); 
} 

代替