对不起我的英语不好。我需要使用 Android 数据绑定处理按钮单击。我包含在 content_main.xml 数据绑定中。
<data>
<variable
name="temp"
type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityData" />
<variable
name="presenter"
type="skubyev.anton.navigationdrawer.DataBindingClass.MainActivityPresenter"/>
</data>
....
<android.support.design.widget.FloatingActionButton
android:onClick="@{() -> presenter.onShowData(temp)}"
Run Code Online (Sandbox Code Playgroud)
但是 MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContentMainBinding binding = DataBindingUtil.setContentView(this, R.layout.content_main);
MainActivityPresenter mainActivityPresenter = new MainActivityPresenter(this);
MainActivityData mainActivityData = new MainActivityData("??? ?????");
binding.setTemp(mainActivityData);
binding.setPresenter(mainActivityPresenter);
setContentView(R.layout.activity_main);
....
@Override
public void showData(MainActivityData mainActivityData) {
String textForRecognition = mainActivityData.getTextForRecognition();
Toast.makeText(this, textForRecognition, Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)
我希望函数showData运行,然后单击 content_main 中的 FloatingActionButton。但是 showData - MainActivity 类中的函数。因此,据我所知,当您单击位于content_main.xml上的按钮时,它不会被调用。我该怎么办?创建一个单独的类 ContentActivity.java 和函数 showData。
我只想让 MainActivity.java 负责处理对 …
java data-binding android navigation-drawer android-databinding
http://cm08323.tmweb.ru/android/determinace/json/images.json 我有一些 json 到服务器。
我的数据库类:
@Entity
data class Image(val url: String = "", val urlAnswer: String = "", val race: String = "") : DisplayableItem, Persistable
Run Code Online (Sandbox Code Playgroud)
api接口:
interface ImagesAdi {
@GET("android/determinace/json/images.json")
fun getImages(): Single<List<ImagesResponse>>
}
...
class ImagesResponse(
val images: List<ImageSingle>)
class ImageSingle(val url: String,
val url_answer: String,
val race: String)
Run Code Online (Sandbox Code Playgroud)
我用于将ImagesResponse转换为Image 的映射器:
@Singleton
class ChooseRaceMapper @Inject constructor() : (ImageSingle) -> Image {
override fun invoke(response: ImageSingle): Image = Image(response.url, response.url_answer, response.race)
}
Run Code Online (Sandbox Code Playgroud)
从List< ImageSingle …
我正在写QT.OpenGL已连接,工作正常,但事件和keyPressEvent mousePressEvent不响应击键.
class MainWindow : public QGLWidget
{
Q_OBJECT
protected:
void initializeGL(); // ????? ??? ????????????????? opengl
void resizeGL(int nWidth, int nHeight); // ????? ?????????? ????? ??????? ????????? ??????? ????
void paintGL(); // ????? ??? ?????? ??????????? ?? ?????
void paintSun();
void mousePressEvent(QMouseEvent *mouse);
void keyPressEvent(QKeyEvent *ke);
public:
MainWindow(int x, int y,QWidget *parent = 0);
~MainWindow();
};
void MainWindow::keyPressEvent(QKeyEvent *ke)
{
switch (ke->key())
{
case Qt::Key_Space://NO REACTION
View += 1;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
paintPlanet();
break;
}
updateGL();
}
Run Code Online (Sandbox Code Playgroud) 我有两节课.
class A:
class B: public A
{
//new function
void setHint(...);
}
Run Code Online (Sandbox Code Playgroud)
并有结构数据.
typedef std::shared_ptr<A> window_ptr;
std::stack<window_ptr> m_windowsStack;
m_windowsStack.push(std::make_shared<A>("Hint"));
m_windowsStack.push(std::make_shared<B>("Game"));
Run Code Online (Sandbox Code Playgroud)
并在堆栈中找到函数:
std::shared_ptr<A> WindowManager::findWindow(std::string title)
{
... return result;
}
Run Code Online (Sandbox Code Playgroud)
并在堆栈中使用find元素的函数:
auto w = findWindow("Game"); //return element type B
w->setHint(window);
Run Code Online (Sandbox Code Playgroud)
但事实证明函数findWindow返回type A.我得到错误"'A类'没有名为'setHint'w-> setHint(window)的成员;"
我是否需要将A类中的setHint函数声明为虚函数?如何使变量自动理解它是B类型?