我在我的应用程序中使用ViewPager并在主Activity中定义它.在Inside onCreate方法中,我从SharedPreferences加载了一些页面,然后将它传递给PagerAdapter:
@Override
public int getCount() {
return numberOfPages;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果我将Preferences(或其他Activity)中的这个数字更改为我之前查看过的其他页面索引,我的应用程序崩溃了,因为当我使用此ViewPager返回活动时,此索引超出范围.只需更改活动的ViewPager页面即可修复它.有什么办法吗?
操作栏兼容性已添加到支持库,修订版18中.它现在具有ActionBarActivity用于在旧版Android上使用操作栏创建活动的类.
有没有办法从支持库添加Action Bar PreferenceActivity?
以前我用ActionBarSherlock,它有SherlockPreferenceActivity.
android preferenceactivity android-actionbar android-support-library
我正在尝试通过重新启动方向更改的活动来解决问题.
我有一个ActionBar带有下拉列表导航,每次旋转后,该列表的第一个元素被激活.保持fragment内容并不困难,但我不知道如何设置活动列表项.
这是以下定义ActionBar:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> list = ArrayAdapter
.createFromResource(this, R.array.action_list, android.R.layout.simple_dropdown_item_1line);
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(list, this);
Run Code Online (Sandbox Code Playgroud)
这是我的解决方法:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (!application.isRotated) {
application.activePosition = itemPosition;
application.activeId = itemId;
getFragmentManager().beginTransaction()
.replace(android.R.id.content, MyFragment.newInstance(itemPosition))
.commit();
} else {
application.isRotated = false;
this.onNavigationItemSelected(application.activePosition, application.activeId);
}
return true;
}
@Override
protected void onStop() {
super.onStop();
application.isRotated = true;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是最好的解决方案.
我正在尝试从JavaScript中注入我的CSS,它是作为内容脚本注入的:
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"js": ["script.js"]
}
],
Run Code Online (Sandbox Code Playgroud)
我发现了关于注入CSS的类似问题,但是在使用来自已接受答案的代码时遇到了问题.这是我的script.js内容:
var link = document.createElement("link");
link.href = chrome.extension.getURL("style.css");
link.type = "text/css";
link.rel = "stylesheet";
document.getElementsByTagName("head")[0].appendChild(link);
Run Code Online (Sandbox Code Playgroud)
加载某些页面后,此消息显示在控制台中:
拒绝加载chrome-extension://phkgaaiaakklogbhkdnpjncedlbamani/fix.css.资源必须列在web_accessible_resources清单键中,以便由扩展名外的页面加载.
有没有什么办法解决这一问题?或者,也许,从该JavaScript文件中注入一些CSS的其他方法?
注意:我不能直接从清单中包含样式表.
我正在尝试捕获checkboxChrome扩展程序弹出窗口中的更改.文件说:
内联JavaScript将不会被执行
在同一页面上提供了一个示例,但它用于button.我不知道如何修改它以便捕获chekbox的状态变化.
document.addEventListener('DOMContentLoaded', function () {
document.querySelector('button').addEventListener('click', clickHandler);
});
Run Code Online (Sandbox Code Playgroud)

我想TextView通过按a 来改变a Button,但是不明白如何正确地做到这一点.
这是我布局的一部分:
<TextView android:id="@+id/counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Change text!" />
Run Code Online (Sandbox Code Playgroud)
这是我的活动:
public class Click extends Activity {
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
// ???
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么把onClick()方法放在里面?
所以,我正试图HashMap在Android 上存储.我认为使用内部存储更好,但我不明白如何保存 HashMap它然后再读它.有人可以解释一下如何正确地做到这一点吗?
有些计数器有自己的名称和值.我想在启动一些活动时加载它们,使用它们(更改,删除,添加新的),然后保存这些数据以供下次使用.现在我使用HashMap,因为它很容易删除/添加值.
HashMap<String, Integer> counters;
Run Code Online (Sandbox Code Playgroud) 我希望我的EditText内容类型为数字.我根据参考设置了InputType,它是2.但它仍然可以输入任何角色.
final EditText input = new EditText(this);
input.setRawInputType(InputType.TYPE_CLASS_NUMBER);
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我不能使用XML,但我有EditTextPreference,android:inputType="number"它可以正常工作.
编辑:
这是一些更多的代码:
case R.id.set_counter:
AlertDialog.Builder setCounterDialog = new AlertDialog.Builder(this);
setCounterDialog.setTitle("Set counter value");
final EditText input = new EditText(this);
input.setRawInputType(InputType.TYPE_CLASS_NUMBER);
InputFilter[] filter = new InputFilter[1];
filter[0] = new InputFilter.LengthFilter(4);
input.setFilters(filter);
setCounterDialog.setView(input);
setCounterDialog.setPositiveButton("Ok", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String inputText = input.getText().toString();
counter = Integer.parseInt(inputText);
counterLabel = (TextView) findViewById(R.id.counter);
counterLabel.setText(inputText);
}
});
setCounterDialog.setNegativeButton("Cancel", null);
setCounterDialog.show();
return true;
Run Code Online (Sandbox Code Playgroud) 有没有办法为LinearLayout其他任何东西设置边框纹理View?由于屏幕尺寸不同,我不能将图像设置为背景.
这是我正在谈论的纹理样本:

我尝试使用Nine-patch,但它会延伸应该重复的白线.
Draw 9-patch工具的屏幕截图:
