判斷
發表人:
訪客
當接收一個String 假設為result
則判斷此result
若為 ABC,則跳至 ABC頁面
若為 DEF,則跳至 DEF頁面
除了可以if .. else以及switch .. case 來寫
像是以下
Intent intent = new Intent();
if(rawResult.equals("ABC"))
{
intent.setClass(CaptureActivity.this,ABC.class);
}
intent.setClass(main.this,test.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
請問有沒有辦法可以直接跳至一樣文字串的頁面?
像是以下
Intent intent = new Intent(); intent.setClass(main.this,result.class);//此處若result傳回ABC,則直接跳至ABC頁面
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
試過是無法直接這樣寫,不知道有無其他辦法可以像是這樣判斷的呢?
則判斷此result
若為 ABC,則跳至 ABC頁面
若為 DEF,則跳至 DEF頁面
除了可以if .. else以及switch .. case 來寫
像是以下
Intent intent = new Intent();
if(rawResult.equals("ABC"))
{
intent.setClass(CaptureActivity.this,ABC.class);
}
intent.setClass(main.this,test.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
請問有沒有辦法可以直接跳至一樣文字串的頁面?
像是以下
Intent intent = new Intent(); intent.setClass(main.this,result.class);//此處若result傳回ABC,則直接跳至ABC頁面
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
試過是無法直接這樣寫,不知道有無其他辦法可以像是這樣判斷的呢?
發表人:
Seachaos
積分: 2432
積分: 2432
這個是沒有問題的
這有點類似Class Loader的概念
可以用來動態的加載Android的Activity或其他Class
[sea:javaCode]
Intent i = new Intent();
i.setClass(this, Class.forName("com.test.one.Main2"));
startActivity(i);
[/sea]
這有點類似Class Loader的概念
可以用來動態的加載Android的Activity或其他Class
[sea:javaCode]
Intent i = new Intent();
i.setClass(this, Class.forName("com.test.one.Main2"));
startActivity(i);
[/sea]
發表人:
訪客
請問回傳值(result)是這樣放嗎?
Intent i = new Intent();
i.setClass(this, Class.forName(result));
startActivity(i);
Intent i = new Intent();
i.setClass(this, Class.forName(result));
startActivity(i);
發表人:
Seachaos
積分: 2432
積分: 2432
是的沒錯,但result要是完整的路徑名稱
如 test 這個就是 com.example.text
如 test 這個就是 com.example.text
發表人:
訪客
你好,所以要寫成
Intent i = new Intent();
i.setClass(this, Class.forName(XXX.XX.result));
startActivity(i);
這樣嗎?
Intent i = new Intent();
i.setClass(this, Class.forName(XXX.XX.result));
startActivity(i);
這樣嗎?
發表人:
訪客
你好,改成這樣後,它顯示錯誤
說需要加try..catch..
或是加throws宣告
請問是不是要加呢?
說需要加try..catch..
或是加throws宣告
請問是不是要加呢?
發表人:
Seachaos
積分: 2432
積分: 2432
Class.forName(String className)
給的是字串
另外try catch是要加上去的
因為有可能會找不到Class而產生Class Not Found Exception
給的是字串
另外try catch是要加上去的
因為有可能會找不到Class而產生Class Not Found Exception
發表人:
訪客
你好,我改成這樣
[sea:javaCode]
public void handleDecode(String rawResult){
// Display the result
playVibrate();
try
{
Class result = Class.forName(rawResult);
Intent intent = new Intent();
intent.setClass(CaptureActivity.this,result);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
但找不到對應的activity,不知道是哪裡寫錯呢?
[sea:javaCode]
public void handleDecode(String rawResult){
// Display the result
playVibrate();
try
{
Class result = Class.forName(rawResult);
Intent intent = new Intent();
intent.setClass(CaptureActivity.this,result);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
[/sea]
但找不到對應的activity,不知道是哪裡寫錯呢?
發表人:
Seachaos
積分: 2432
積分: 2432
你的rawResult是多少?
是完整的Class Path+Name嗎?
是完整的Class Path+Name嗎?
發表人:
訪客
你好,rawResult是從攝像鏡頭讀取文字
然後看rawResult是什麼文字串
就跳到相對的class
好像不是完整的Path+Name..
然後看rawResult是什麼文字串
就跳到相對的class
好像不是完整的Path+Name..
發表人:
Seachaos
積分: 2432
積分: 2432
所以你要把他變成完整的Class Name
看是 "com.path." + rawResult
或 rawResult 直接就是 "com.path.test"
看是 "com.path." + rawResult
或 rawResult 直接就是 "com.path.test"
發表人:
訪客
請問完整的路徑要寫方法的名字嗎?
"package's name . activity's name . fuction's name"+rawResult
還是
"package's name . activity's name"+rawResult
?
不好意思~一直麻煩你。
"package's name . activity's name . fuction's name"+rawResult
還是
"package's name . activity's name"+rawResult
?
不好意思~一直麻煩你。
發表人:
Seachaos
積分: 2432
積分: 2432
直接 "packageName." + rawResult(ClassName) 就可以了
例:
packageName = "com.test"
rawResult = "main"
那就會得到
com.test.main <- 這是一個Activity
例:
packageName = "com.test"
rawResult = "main"
那就會得到
com.test.main <- 這是一個Activity
發表人:
訪客
你好,非常謝謝!!
已解決。
已解決。