我是java的新手,我目前正在android studio中测试它。
我试图从 TEST2 类中的 TEST 类中访问 showMessage()函数。
如果在同一个类中调用 showMessage()函数,但是如果我尝试从另一个类访问它,代码就会停止,这没有问题。
也许我的逻辑或语法有问题,但我不完全确定它是哪一个。我已经尝试过寻找一些解决方案,但我找不到可以帮助解决问题的答案。
这是我的TEST.java代码
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class TEST extends AppCompatActivity {
public TEST2 ab;
Button button;
private final String text ="Testing test test test testing test";
public void showMessage(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setCancelable(false) // cancel with button only
.show();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
button = (Button) findViewById(R.id.buttontest);
ab = new TEST2(this);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMessage(text);
}
});
}
}
class TEST2 extends View{
public TEST t = new TEST();
public TEST2(Context context) {
super(context);
//there is error if I tried this 2 line code
//onTest();
//t.showMessage("TESTING FROM TEST2 CLASS");
}
public void onTest(){
t.showMessage("TESTING FROM TEST2 CLASS");
}
}
这是我的 activity_test.xml布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/buttontest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
答案 0 :(得分:1)
您可以通过传递参数上下文
来完成此操作public void showMessage(String message, Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
})
.setCancelable(false) // cancel with button only
.show();
}
答案 1 :(得分:1)
警报对话框是一个UI元素,如果更改了活动,它将不会从另一个类运行。如果活动没有改变,试试这个......
<script type="text/javascript">
$( document ).ready(function() {
$('#employee_grid').DataTable({
"bProcessing": true,
"serverSide": true,
"ajax":{
url :"run.php", // json datasource
data:function(d){ //use for pass addtional parameter
d.user_id="your user id";
},
type: "post", // type of method , by default would be get
"aoColumnDefs" : [
{
'bSortable' : false,
'aTargets' : [3,4]
}],
"dataSrc": function (jsonData) {
for ( var i=0, len=jsonData.data.length ; i<len ; i++ ) {
jsonData.data[i][1] = jsonData.data[i][1]+jsonData.data[i][2]+jsonData.data[i][3]+jsonData.data[i][4];
jsonData.data[i][8] = '<a href="cus_details.php" class="btn btn-primary btn-xs"> View Details </a> <a href="update_details.php" class="btn btn-primary btn-xs"> Update Status </a>';
}
return jsonData.data;
},
error: function(){ // error handling code
// $(".employee-grid-error").html("");
//$("#employee_grid").append('<tbody class="employee-grid-error"> <tr><th colspan="3">No data found in the server</th></tr></tbody>');
$("#employee_grid_processing").css("display","none");
}
}
});
});
</script>
答案 2 :(得分:0)
public void onTest(){
if (getContext() instanceof Test)
((Test)getContext()).showMessage("TESTING FROM TEST2 CLASS");
}
答案 3 :(得分:0)
只需通过Context
课程的TEST2
。
public void showMessage(Context context, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
.............
......................
}
<强> TEST2:强>
public TEST2(Context context) {
super(context);
t.showMessage(context, "TESTING FROM TEST2 CLASS");
}