我是Android编程新手。 任何人都可以帮助我在同一个Android Activity中使用Previous和Next Intents的功能吗?
我正在构建一个报价应用程序。 所以,我现在所有的行情都整齐地存储在 String Array 中。
我需要做的就是在Back& amp;中循环通过字符串数组。第四种方式。
我尝试使用 For / While循环,但是,我一直遇到错误,我必须将我的迭代器变量“i”作为Final。
因此,我使用了迭代器类型&我能整齐地前进。 然而,退回是一个问题。我不知道如何通过Iterator类型实现它。
此外,应用程序在字符串数组的末尾崩溃(虽然我有一个catch异常块)。
有人可以帮我吗?
提前致谢!
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try
{
final String[] myStringArray = getResources().getStringArray(R.array.DayOfWeek);
final List<String> myArray = new ArrayList<String>(Arrays.asList(myStringArray));
final Iterator<String> it = myArray.iterator();
View prevButton = (Button) findViewById(R.id.previous_button);
View nextButton = (Button) findViewById(R.id.next_button);
final TextView tv = (TextView)findViewById(R.id.text);
prevButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("TAG", "prevButton tapped");
//How Can I move back the String Array?
}
});
nextButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("TAG", "nextButton tapped");
//Using Iterator
if(it.hasNext()) {
//refreshTextView();
tv.setText(it.next());
Log.d("WhichString", it.next());
//Once I reach the end, the app crashes :(
}
}
});
} catch(Exception e) {
//Exception block useless as of now
Log.e("MyApp", "exception", e);
}
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//Had to keep this block as it was looking for it in the code.
//Although this is not required.
Log.d("Test","hi");
}
我试过@ Nasser的解决方案。 但是当我运行代码时,我收到了这个错误。
... 05-25 08:23:59.492:W / dalvikvm(1060):threadid = 1:线程退出未捕获异常(组= 0x40a71930) 05-25 08:23:59.512:E / AndroidRuntime(1060):致命异常:主要 05-25 08:23:59.512:E / AndroidRuntime(1060):java.lang.RuntimeException:无法实例化活动ComponentInfo {com.adworks.quotes / com.adworks.quotes.MainActivity}:java.lang.NullPointerException 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread.access $ 600(ActivityThread.java:141) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.os.Handler.dispatchMessage(Handler.java:99) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.os.Looper.loop(Looper.java:137) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread.main(ActivityThread.java:5041) 05-25 08:23:59.512:E / AndroidRuntime(1060):at java.lang.reflect.Method.invokeNative(Native Method) 05-25 08:23:59.512:E / AndroidRuntime(1060):at java.lang.reflect.Method.invoke(Method.java:511) 05-25 08:23:59.512:E / AndroidRuntime(1060):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 05-25 08:23:59.512:E / AndroidRuntime(1060):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 05-25 08:23:59.512:E / AndroidRuntime(1060):at dalvik.system.NativeStart.main(Native Method) 05-25 08:23:59.512:E / AndroidRuntime(1060):引起:java.lang.NullPointerException 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.content.ContextWrapper.getResources(ContextWrapper.java:89) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78) 05-25 08:23:59.512:E / AndroidRuntime(1060):at com.adworks.quotes.MainActivity。(MainActivity.java:15) 05-25 08:23:59.512:E / AndroidRuntime(1060):at java.lang.Class.newInstanceImpl(Native Method) 05-25 08:23:59.512:E / AndroidRuntime(1060):at java.lang.Class.newInstance(Class.java:1319) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.Instrumentation.newActivity(Instrumentation.java:1054) 05-25 08:23:59.512:E / AndroidRuntime(1060):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 05-25 08:23:59.512:E / AndroidRuntime(1060):... 11更多
我以这种方式调用我的字符串数组。
nextButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
textOut = myStringArray[getCount()];
tv.setText(textOut);
}
答案 0 :(得分:0)
我认为你应该使用一个int变量来存储你当前的位置,就像@Luksprog所说。
类似
private int quotesCount = 0;
并点击NextButton
myArray.get(getCount());
使用某种方法计算当前计数;
public int getCount() {
if (myArray.size() > 0){
if (quotesCount == myArray.size() - 1) {
quotesCount = 0;
} else {
quotesCount++;
}
}
return quotesCount;
}
它没有完全正常工作,只是知道如何去做。